2016-03-22 18 views
0

Grundsätzlich habe ich eine Registrierungsseite, wo Sie ein Konto für ein Spiel mit einem Serienschlüssel registrieren können. Ich überprüfe, ob der Schlüssel, der eingegeben wurde, in der Datenbank ist.PHP- MYSQL Syntax Fehler

$keyquery = mysql_query("SELECT * FROM keys WHERE key = '$_POST[key]' AND used = '$used'") or die(mysql_error()); 
if(!$row = mysql_fetch_array($keyquery) or die(mysql_error())) 
{ 
//key works 
} 
else 
{ 
//key doesnt work 
} 

Jetzt, wenn ich versuche, ein Konto zu registrieren, erhalte ich einen Fehler.

Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in der Bedienungsanleitung für die richtige Syntax verwenden in der Nähe von ‚Schlüssel WHERE key =‚1234‘AND verwendet =‘ 0" in Zeile 1

+5

'keys' und' key' sind [reservierte Wörter] (https://dev.mysql.com/doc/refman/5.5/en/keywords.html). Surround sie – ImClarky

+1

Ohne die enormen SQL-Injizierungsmöglichkeiten hier zu erwähnen ... –

+1

Sie könnten sich Ihren Code ansehen und 'mysql_real_escape_string' für' $ _POST' verwenden, zB 'mysql_real_escape_strin g ($ _ POST ["key"]) '. Ihr aktueller Code ist vollständig anfällig für SQL-Injektionen – Jer

Antwort

4

key ist ein reserviertes Wort in MySQL zu MySQL-Server-Version entspricht, sollten Sie entfliehen sie mit Backticks `.

$keyquery = mysql_query("SELECT * FROM `keys` WHERE `key` = '$_POST[key]' AND `used` = '$used'") or die(mysql_error());