PHP/MYSQL更新查询不工作
有人能告诉我为什么这个更新查询不起作用吗PHP/MYSQL更新查询不工作,php,mysql,sql,get,sql-update,Php,Mysql,Sql,Get,Sql Update,有人能告诉我为什么这个更新查询不起作用吗 if ($_GET['update']) { include 'config.php'; //Connect to MYSQL Database server $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Could not connect to MYSQL Database."); $result = mysql_select_db(DB_NAME, $connect) or d
if ($_GET['update']) {
include 'config.php';
//Connect to MYSQL Database server
$connect = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Could not connect to MYSQL Database.");
$result = mysql_select_db(DB_NAME, $connect) or die("Could not connect to MYSQL table.");
mysql_query("UPDATE contact SET read = 1 WHERE id = '$_GET[update]'")or die("Query failed.");
echo "Update works!";
} else {
echo "Update does not work...ughh.";
}
先谢谢你
编辑:我让查询工作。对于那些担心安全性的人,我使用这个脚本作为测试,看看我是否想使用它。我刚刚添加了安全性,现在脚本工作了。谢谢大家的帮助和提示 你可以这样测试
mysql_query("UPDATE contact SET read = 1 WHERE id = '".(int)$_GET['update']."'")or die("Query failed.");
如果这不是特定于问题的我相信您需要转义字符串,让$\u GET['update']将其值添加到字符串中。但你真的应该使用预先准备好的语句,至少你会受到恶意用户的攻击
准备好的语句:为您的查询行尝试以下操作:
mysql_query("UPDATE contact SET read = 1 WHERE id = '".$_GET[update]."'")or die("Query failed: " . mysql_error());
请注意die()
语句的更改,以便更好地处理错误:
die("Query failed: " . mysql_error());
*另外,仅供参考,您应该像这样转义用户变量(例如GET变量),以防止SQL注入:
mysql_query("UPDATE contact SET read = 1 WHERE id = '".mysql_real_escape_string($_GET[update])."'")or die("Query failed: " . mysql_error());
请报告结果。
READ
是保留字。您需要将其放在backticks中或重命名字段
请查看此链接:
请尽量不要使用mysql\u查询。它很旧,效率不高。为什么不试着了解PDO并准备声明 什么是列读取
mysql_query("UPDATE contact SET read = 1 WHERE id = '$_GET[update]'")
从read的非大写字母判断,我怀疑您在MySQL中为该列使用了保留字
见:
为了避免这个问题,只需在read周围加上一句话。即
mysql_query("UPDATE contact SET 'read' = 1 WHERE id = '$_GET[update]'")
或者根据j.bruni的说法更好:
mysql_query("UPDATE contact SET `read` = 1 WHERE id = '$_GET[update]'")
我们不是来调试代码的,您得到了什么错误?+1因为OP需要马上阅读有关sql注入的内容我还没有添加安全性!为什么要对所有内容进行编码,然后添加安全性,这似乎需要做很多工作,为什么不在第一次就纠正它呢?错误是:查询失败:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在错误消息第1行的“read=1,其中id=148”附近使用的正确语法;尼克给出了正确的答案;spitfire获得了荣誉并获得了分数;我们可以认为这是公平的,因为这是他第一次参加这样的活动。谢谢朋友!哈哈,我觉得用“读”这个词太傻了。哈哈,这是最好的答案。手册建议使用“反勾号”字符而不是引号。谢谢兄弟!被“匹配”(显然是一个关键词)卡住了:P
mysql_query("UPDATE contact SET `read` = 1 WHERE id = '$_GET[update]'")