0

出力の $sql ステートメントでエラーが発生しました。

SQL 構文にエラーがあります。Near '' at line 1" を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。これは、UPDATE users SET activationkey ステートメントを参照しています。

  $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());} 
}
 }

なぜその構文が間違っているのかわかりません。

4

1 に答える 1

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

ヒント: そのクエリで SQL インジェクションを実行できるため、ID を保護することをお勧めします。idつまり、WHERE = '$row['id']', use WHERE = (int) ($row['id'])と言う瞬間を意味id します。これにより、そのクエリで整数のみが指定されていることを確認します。文字列の場合は mysql_real_escape_string($row['string'])

于 2012-05-02T20:20:34.187 に答える