繁体   English   中英

PHP / MYSQL更新查询不起作用

[英]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中使用了一个保留字来表示该列。

看到:

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

READ是保留字。 你需要将它放在反引号内或重命名你的领域。

看看这个链接:

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

你可以测试一下

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM