2016-03-22 18 views
0

基本的に私は、ゲームのアカウントをシリアルキーで登録できる登録ページを持っています。入力されたキーがデータベースにあるかどうかを確認します。PHP- MYSQL構文エラー

$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 
} 

ここでアカウントを登録しようとすると、エラーが発生します。

SQL構文に誤りがあります。ラインでの1234 'AND使用=「0" を1

+5

' keys'と – ImClarky

+1

ここに膨大なSQLインジェクションの可能性があると言わずに... –

+1

あなたのコードを見て、 '$ _POST'に' mysql_real_escape_string'を使ってみてください。例えば 'mysql_real_escape_strin g($ _ POST ["key"]) '。あなたの現在のコードはSQLインジェクションに完全に脆弱です – Jer

答えて

4

keyは、MySQLの予約語は、あなたがすべきであるの近くに」キー=キーのを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してくださいある[予約語は](https://dev.mysql.com/doc/refman/5.5/en/keywords.html)。それらをサラウンドkey` `バッククォート`でエスケープ。

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