[英]PHP/MYSQL Update query not working
任何人都可以告诉我为什么这个更新查询不起作用?
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 = '".$_GET[update]."'")or die("Query failed: " . mysql_error());
注意更改die()
语句以获得更好的错误处理:
die("Query failed: " . mysql_error());
*另外,只是一个FYI,你应该真的逃避用户变量(例如GET变量),以防止SQL注入:
mysql_query("UPDATE contact SET read = 1 WHERE id = '".mysql_real_escape_string($_GET[update])."'")or die("Query failed: " . mysql_error());
请报告结果。
列读什么?
mysql_query("UPDATE contact SET read = 1 WHERE id = '$_GET[update]'")
从读取的非大写来判断,我怀疑你在MySQL中使用了一个保留字来表示该列。
看到:
要解决这个问题,只需在阅读时单引号即可。 IE
mysql_query("UPDATE contact SET 'read' = 1 WHERE id = '$_GET[update]'")
或者每个j.bruni更好:
mysql_query("UPDATE contact SET `read` = 1 WHERE id = '$_GET[update]'")
我相信你需要转义字符串以使用$ _GET ['update']将它的值添加到字符串中。 但是你真的应该使用预备语句,至少你会受到恶意用户的攻击。
准备好的声明: http : //php.net/manual/en/pdo.prepared-statements.php
你可以测试一下
mysql_query("UPDATE contact SET read = 1 WHERE id = '".(int)$_GET['update']."'")or die("Query failed.");
如果这不是具体的问题
mysql_query("UPDATE contact SET read = 1 WHERE id = '.$_GET[update].'")or die("Query failed.");
echo "Update works!
请尝试不使用mysql_query。 这是旧的,效率不高。 为什么不试着去了解PDO并准备陈述..?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.