我的查询无效,我不知道它是什么。我正在写一封电子邮件活动脚本。这是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
答案 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?