为什么这个MySQL查询不起作用?

时间:2012-07-27 13:22:05

标签: mysql

我的查询无效,我不知道它是什么。我正在写一封电子邮件活动脚本。这是URL;

http://www.example.com/activate.php?id=1&h=secretkey1

这是activate.php的样子;

<?php
require "inc/connect.php";

$id = (int)$_GET['id'];
$hash = mysql_real_escape_string($_GET['h']);

$sql = mysql_query("SELECT id, h, active FROM tablename WHERE id=$id AND key=$hash") or die(mysql_error());  
$row = mysql_fetch_array($sql);

if ($row['active'] == "1") {
    echo "error!";
}
elseif ($row['active'] == "0") {
    mysql_query("UPDATE tablename SET active=1 WHERE id='$id' AND key='$hash'");
}
?>

这是我得到的错误;

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在第1行'key = secretkey1'附近

在我的数据库中,我在tablename中有一个带有;

的测试字段
id /    key    / active
------------------
1 / secretkey1 / 0

1 个答案:

答案 0 :(得分:2)

你有这个:

 key=$hash

应该是:

 key='$hash'

顺便说一句,尽可能使用参数化查询来阻止 sql注入攻击。

使用PDO:

How can I prevent SQL injection in PHP?

Are PDO prepared statements sufficient to prevent SQL injection?