Verschil in Mysql versie veroorzaak fout?

Pagina: 1
Acties:

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik heb op de server waar ik op ontwikkel mysql versie 4.1.7 draaien.

Op de server waar het pakket gaat draaien wat ik ontwikkel draait mysql versie 3.23.58

Nu heb ik de volgende query:
PHP:
1
2
3
4
5
6
7
8
9
10
$query = "SELECT datum, SUM(stukprijs * aantal) AS totaaldag FROM kosten WHERE afdeling = $overz_afdeling AND MONTH(datum) = $overz_maand GROUP BY DAY(datum)";
$result = mysql_query($query);
if (mysql_num_rows($result) < 1)
{
echo "Geen resultaten voor deze maand gevonden";

};
while ($r = mysql_fetch_array($result))
{ 
//echo acties


Als ik deze op de ontwikkelserver draai geeft hij geen problemen, draait keurig en de resultaten verschijnen gewoon.

Nu heb ik op de server waar het op gaat draaien het volgende:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /....php on line 56
Geen resultaten voor deze maand gevonden
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /....php on line 61

Regel 56 is dit stuk van de query:
PHP:
1
if (mysql_num_rows($result) < 1)


Regel 61 is dit stuk:
PHP:
1
while ($r = mysql_fetch_array($result))


Ik kan niet snappen waarom dit niet werkt onder een oudere versie van mysql. Iemand die dit kan verklaren?

Verwijderd

probeer eens
PHP:
1
$result = mysql_query($query);
te vervangen door
PHP:
1
$result = mysql_query($query,$con);
waar $con de connectie is die teruggegeven wordt door mysql_connect();

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Connecten met de database doe ik met een include bestand, verder niet met vars ofzo. Als ik de regel aanpas met wat je aangeeft krijg ik er nog een foutmelding bij:


Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /....php on line 56

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21:16
Het gaat waarschijnlijk al veer eerder mis. Ik denk, te zein aan "MySQL-link resource" bij het maken van een connection naar de database toe. Wat waarschijnlijk in je include bestand staat.

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hmm alle andere queries draaien wel, behalve deze, dus weet niet of dat wel zo is..

  • Tommetje
  • Registratie: Februari 2004
  • Laatst online: 19-11-2024
Waarschijnlijk ondersteunt die oudere mysql versie bepaalde delen van je query niet, waardoor deze fout is. Maak er eens van mysql_query($query) or die (mysql_error()); en kijk wat voor error je krijgt. ;)

Hoi!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 21:24

NMe

Quia Ego Sic Dico.

Ik denk dat het in die SUM zit. Probeer eens dit:
code:
1
(SUM(stukprijsaantal) * SUM(aantal)) AS totaaldag

i.p.v. dit:
code:
1
SUM(stukprijs * aantal) AS totaaldag

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Deze melding:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(datum)' at line 1

Maar welke datum want het staat er 3 keer in :D

Ben er al achter: Oudere versies van mysql kunnen blijkbaar: GROUP BY DAY(datum) niet aan.

[ Voor 22% gewijzigd door ViNyL op 24-12-2004 17:56 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 21:24

NMe

Quia Ego Sic Dico.

ViNyL schreef op vrijdag 24 december 2004 @ 17:51:
Deze melding:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(datum)' at line 1

Maar welke datum want het staat er 3 keer in :D
Ik vermoed die laatste. Groupen op een functie kan volgens mij niet.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Inderdaad, dat was het ja :)

Thanks allen.

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 10-05 18:18
nu dit opgelost is: In hoeverre is het een probleem om deze Mysql versie te upgraden naar 4.x?
@Morax hieronder: ik bedoel niet in het algemeen, maar echt specifiek voor de TS

[ Voor 34% gewijzigd door 0siris op 24-12-2004 21:41 ]

ach...in een volgend leven lach je er om!


  • Morax
  • Registratie: Mei 2002
  • Laatst online: 23:24
Naar mijn weten praktisch geen. Volgens mij is SQL backwards compatible met oudere versies, en zijn het veelal nieuwere functies die toegevoegd zijn dan oudere functies die gewijzigd zijn :)

100% zeker weten doe ik het niet though....

What do you mean I have no life? I am a gamer, I got millions!


  • BrZ
  • Registratie: Maart 2000
  • Laatst online: 18-05 08:12

BrZ

-NMe- schreef op vrijdag 24 december 2004 @ 17:50:
Ik denk dat het in die SUM zit. Probeer eens dit:
code:
1
(SUM(stukprijsaantal) * SUM(aantal)) AS totaaldag

i.p.v. dit:
code:
1
SUM(stukprijs * aantal) AS totaaldag
Dat zijn 2 totaal verschillende dingen hoor ;)

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Upgraden is een optie, maar aangezien het hosten uitbesteed is moet dat overlegt worden. Een probleem is het iig niet.

  • Skaah
  • Registratie: Juni 2001
  • Niet online
DAY(date)
DAY() is a synonym for DAYOFMONTH(). It is available as of MySQL 4.1.1.
DAYOFMONTH(date)
Returns the day of the month for date, in the range 1 to 31.
Dus, DAYOFMONTH() gebruiken.

  • rickmans
  • Registratie: Juli 2001
  • Niet online

rickmans

twittert

Morax schreef op vrijdag 24 december 2004 @ 20:11:
Naar mijn weten praktisch geen. Volgens mij is SQL backwards compatible met oudere versies, en zijn het veelal nieuwere functies die toegevoegd zijn dan oudere functies die gewijzigd zijn :)

100% zeker weten doe ik het niet though....
Het enige waar je rekening mee moet houden in de nieuwste versie van MySQL dat ze een andere methode voor password hashing gebruiken die niet in php geimplementeerd is. Hier is wel om heen te werken door het password van de user te setten via de old_password function :).

Don't mind Rick

Pagina: 1