Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MYSQL更新查询不工作_Php_Mysql_Sql_Get_Sql Update - Fatal编程技术网

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]'")