gpt4 book ai didi

php - mysqli 更新查询应该返回结果吗?

转载 作者:IT老高 更新时间:2023-10-29 00:11:34 38 4
gpt4 key购买 nike

我正在将我的 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() 不可用的问题。

基本上,我只是想知道这种改变的行为是否在意料之中,或者我是否应该继续尝试在某个地方找到一些错误。

最佳答案

准备语句执行

 $stmt->execute();

execute()成功时返回 TRUE,失败时返回 FALSE。

因为 UPDATEDELETEINSERT 不产生任何结果集,所以不需要使用 get_result()。如果您需要知道受影响行的总数,可以使用 mysqli_stmt_affected_rows() 函数来实现。

因此你的代码可能看起来像这样

$stmt = $mysqli->prepare("UPDATE `data` SET `field1` = 1 WHERE `key` = (?)")
$stmt->bind_param("s", $mykey);
$stmt->execute();
//You can get the number of rows affected by your query
$nrows = $stmt->affected_rows;
if (!$nrows) {
//Nothing has been updated
}

关于php - mysqli 更新查询应该返回结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14908087/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com