2012-05-02 6 views
0

出力時に$ sql文にエラーがあります。mySQLクエリ文

SQL構文に誤りがあります。ライン1"でこれは、ユーザーがactivationkey文をSET UPDATEを参照している「」の近くに使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください。

$query = "SELECT * FROM users"; 

    $result = mysql_query($query) or die(mysql_error()); 

     while($row = mysql_fetch_array($result)){ 

if ($queryString == $row["activationkey"]){ 
$sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])"; 

    if (!mysql_query($sql)) { *die('Error: in activation' . mysql_error());} 
} 
} 

私は、なぜその構文を知りません間違っている

+2

'echo $ sql;'してください。 – Sampson

+1

問題とは別に、mysqliまたはPDOを使用する必要があります。 PDO – simshaun

+0

のUPDATEユーザーのためのhttp://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developersをチェックしてください。SET activationkey = ''、status = 'activated' WHERE(id =)$行[id]から何も得られません。 –

答えて

0
$query = "UPDATE `users` SET `activationkey` = '', status='activated' WHERE `id` = '$row['id']'"; 

ヒント:SQLインジェクションは、そのクエリで行うことができますので、私はあなたのIDを確保することを示唆していることで、私はid =「$行[」IDを「]」と言った瞬間を意味し、WHERE id使用。 =(int)($ row ['id'])、 これは、そのクエリで整数だけが指定されていることを確認します。 mysql_real_escape_string($ row ['string'])