[php/mysql]Query fout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 10-09 20:43
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in xxx/index.php on line 82

Ik krijg steeds deze foutmeldingen,
Als ik de query output krijg ik:
code:
1
SELECT * FROM s1_movement WHERE to = '2043'


Zo ver ik die is dat goed.
Dan doe ik dit:

code:
1
2
3
4
5
$result = mysql_query($q);

while($row = mysql_fetch_array($result)) {
    echo "gevonden";
}


Alleen ik krijg dan niet gevonden terwijl er wel degelijk een row bestaat met die informatie:

Afbeeldingslocatie: http://www.imgupload.org/images/212_huh.png

Ik heb rondgezocht op internet, alls het goed is is:
while($row = mysql_fetch_array($result)) {
echo "gevonden";
}

goed, alleen de query zou foru moeten zijn,
ik heb al de ' ' weg gelaten, ""gepakt ipv " ".

Etc etc. Ik kan het echt niet vinden, ziet iemand het toevalig?

Edit:
Dit was ik vergeten:
code:
1
$q = "SELECT * FROM ".TB_PREFIX."movement WHERE to = $dorpid";


En 5 regels na boven ahd ik een andere query gedaan en die deed het wel, het was alleen in een andere rij (s1_towns).

[ Voor 11% gewijzigd door lauwsa op 13-10-2010 13:43 ]


Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 18-09 14:19
Doe to als kolom eens van accenten voorzien?

Je krijgt in dat geval dus
MySQL:
1
2
3
SELECT * FROM `s1_movement` WHERE `to` = '2043'
ipv
SELECT * FROM s1_movement WHERE to = '2043'


Zie dit als een standaard practise en zet kolomnamen en tables altijd tussen accenten, op deze manier zal MySQL deze woorden niet als operator / keyword / reserved word herkennen of gebruiken, wat vervolgens vaak geen errors produceert maar ook niet de gewenste resultaten geeft..

[ Voor 125% gewijzigd door PeterSelie op 13-10-2010 13:48 ]


Acties:
  • 0 Henk 'm!

  • Accesteam
  • Registratie: Maart 2009
  • Laatst online: 16-09 08:35
Wat krijg je terug als je $result output?

EDIT: nvm :p

[ Voor 16% gewijzigd door Accesteam op 13-10-2010 13:47 ]


Acties:
  • 0 Henk 'm!

  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 10-09 20:43
Het werkt ook nog :|

Maar waarom werkte:

code:
1
SELECT * FROM s1_towns WHERE name = 'lauwdude\'s village' LIMIT 1


eerder in de code wel?

Edit: Thanks :D!

[ Voor 6% gewijzigd door lauwsa op 13-10-2010 13:48 ]


Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 18-09 14:19
De string `name` is in dit geval geen reserved keyword waardoor deze gebruikt zal worden als kolomnaam, zie ook de wijziging in mijn eerdere post.

MySQL probeert unaccented strings altijd eerst als keyword te gebruiken, als deze geldig is en gebruikt 'm daarna als kolomnaam.

[ Voor 53% gewijzigd door PeterSelie op 13-10-2010 13:50 ]


Acties:
  • 0 Henk 'm!

  • PeterSelie
  • Registratie: December 2002
  • Laatst online: 18-09 14:19
Zie overigens voor een complete lijst keywords ook de volgende pagina:
http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

Let wel dat deze lijst verschilt per MySQL versie :)

Acties:
  • 0 Henk 'm!

  • Ssander
  • Registratie: December 2009
  • Laatst online: 12-06-2023
Er is hele rits aan reserved keywords die je niet zomaar kunt gebruiken. De keywords kun je hier vinden;

http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

'to' staat er ook tussen. Wil je deze gebruiken zul je deze dus moeten quoten zoals SoaDmaggot hierboven aangeeft.

Edit: te laat :(

[ Voor 3% gewijzigd door Ssander op 13-10-2010 13:53 ]


Acties:
  • 0 Henk 'm!

  • lauwsa
  • Registratie: Juli 2010
  • Laatst online: 10-09 20:43
ahh dat is waar ook, helemaal vergeten :$
Thanks!
Pagina: 1