Autor Zpráva
janbarasek
Profil
Ahoj, mám asi hloupý dotaz, ale zajímalo by mě, proč mi nefunguje tento zápis:
mysql_query("UPDATE users SET autorizace = '1' WHERE key = '$key'") or die(mysql_error());
Rád bych v tabulce "users" provedl změnu sloupce "autorizace" z hodnoty 0 na 1, pro uživatele s nějakým klíčem v proměnné $key.

Pokud script spustím, tak to vrací tuto chybu a já nechápu proč:
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 'key = '3d284a44350c112a8c6ad433f3cf5c30'' at line 1

Připojení do databáze je funkční, jelikož ostatní scripty (ukládací a čtecí) fungují, jediný problém je s Updatem. Tento zápis používám vždy a až nyní po dlouhé době nějak z ničeho nic přestal fungovat. Btw: Nevyšla náhodou nějaká nová verze a je nyní jiný formát zápisu - tomu ale sám nevěřím.

Předem děkuji za jakoukoli radu.
Tori
Profil
Tipuju, že chybí zpětné apostrofy okolo "key" - přeci jen je to rezervované slovo MySQL, mělo by se do nich dávat vždy.
janbarasek
Profil
Tori:
přeci jen je to rezervované slovo MySQL, mělo by se do nich dávat vždy.
To je ono! Děkuji. Upřímně jsem vůbec netušil, že se musejí specifické slova nesoucí význam nějak oddělovat od běžného příkazu. Do teď mi vše fungovalo asi z toho důvodu, že jsem používal vždy klíč, co nebyl příkazem.

Toto funguje:
mysql_query("UPDATE users SET autorizace = '1' WHERE 'key' = '$key'");
pcmanik
Profil
janbarasek:
Autorizace je zrejme stĺpec typu int a nie string, takže tie apostrofy sú okolo tej jednotky zbytočné.
Tori
Profil
janbarasek:
http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: