【发布时间】:2013-02-01 05:14:12
【问题描述】:
我正在将我的 PHP 代码从 mysql 更新到 mysqli,但我似乎找不到这个问题的答案:Do mysqli update queries return a result?
有了mysql,我可以做到
$result = mysql_query("UPDATE `data` SET `field1` = 1 WHERE `key` = '$mykey');
即使查询没有返回任何行,$result 也会为真。
不过,现在,在 mysqli 代码中,我有类似这样的内容(为清楚起见,删除了错误处理):
$stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 1 WHERE `key` = (?)")
$stmt->bind_param("s", $mykey);
$stmt->execute();
$result = $stmt->get_result();
$result 为假。
作为记录,查询是有效的(忽略我可能将其转录到 stackoverflow 中的任何拼写错误)并且 field1 已按预期在数据库中正确更新。此外,get_result() 对选择查询也很有效,所以这不是 get_result() 不可用的问题。
基本上,我只是想知道这种改变的行为是否在意料之中,或者我是否应该继续尝试在某个地方找到一些错误。
【问题讨论】:
-
好吧...一条评论似乎消失了,告诉我要检查文档,该文档确实声明 get_result “返回结果集或失败时返回 FALSE”。但是,在问我的问题之前我已经读过它了,我想我只是好奇文档是否准确。在 $stmt->get_result() 返回 false 后,我检查了 $stmt->errno(为 0)和 $stmt->error(为空),查询似乎成功执行(因为数据库已更新)。那么这个错误发生在哪里呢?