好吧,我现在生病了,所以也许答案就在我面前,但过去 4 个小时我一直坐在这里试图弄清楚为什么会这样。
基本上我有一个脚本应该更新数据库中的一行。 我要更新的字段是“名称”,它看起来像这样:
// Updating the database with the new name
$name = $this->db->slashes( $this->friends[$row->key] );
$sql = "UPDATE `friends` SET `name` = '" . $name . "' AND `status` = 'updated' WHERE `key` = " . $row->key . " LIMIT 1";
echo '-- Query: ' . $sql . '<br />';
$result2 = $this->db->query( $sql );
if( !$result2 )
echo mysql_error();
输出变成这样(一个例子):
-- Query: UPDATE `friends` SET `name` = 'Andrew Johnsson' AND `status` = 'updated' WHERE `key` = 7823583 LIMIT 1
它没有生成任何 mysql_error 所以查询似乎已经正确地进行了,从查询的外观来看,它应该只是更新了数据库中的一行,其中键是一个数字并将新名称设置为 Andrew Johnsson以及将状态设置为已更新。
但是!在此更新后查看数据库后,此行的名称设置为“0”。它到底为什么要这么做?
关于为什么会发生这种情况的任何想法? 另外,如果您需要更多信息来帮助我,请告诉我,我会很乐意提供!
最佳答案
您的 UPDATE 语法不正确。应该是 SET name = 'string', status = 'updated' WHERE key...
目前,您实际上是在要求它评估 AND 以确定名称列应该更新的内容,这就是您得到 0 的原因。
关于php - SQL 更新后,字段设置为 0 [PHP/MySQL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375356/