gpt4 book ai didi

php - 检查更新语句是否已经执行

转载 作者:行者123 更新时间:2023-11-29 07:37:32 25 4
gpt4 key购买 nike

mysqli_affected_rows 是一种奇怪的行为。 fname更新后不会返回1,可能是2次mysqli_query造成的。如果更新了另一个字段,我可以获得 1。

mysqli_query($mysqli, "UPDATE persons SET fname='$fname' WHERE id='$id'");
mysqli_query($mysqli, "UPDATE tools SET knife='$knife', other='$other' WHERE person_id='$id'");

if (mysqli_affected_rows($mysqli) > 1){
echo json_encode(array(
'id' => (int)$id,
'fname' => $fname,
'tools' => array(
'knife' => $knife,
'other' => $other
)
));
}

那么在我的情况下如何返回更新的行呢?

最佳答案

你的假设是正确的,因为第二个查询已经运行,这将给出不同的结果,所以最好的办法是稍微重组你的代码以......

mysqli_query($mysqli, "UPDATE persons SET fname='$fname' WHERE id='$id'");

if (mysqli_affected_rows($mysqli) >= 1){
mysqli_query($mysqli, "UPDATE tools SET knife='$knife', other='$other' WHERE person_id='$id'");
echo json_encode(array(
'id' => (int)$id,
'fname' => $fname,
'tools' => array(
'knife' => $knife,
'other' => $other
)
));
}

(只是将其更新为 >=1 就像这样 - 我认为如果只更新 1 行就可以了)

虽然我也建议查看准备好的语句并绑定(bind)值,而不是直接将值放入 SQL 语句。

如果你的查询执行失败了,你还应该在每个点检查......像

if ( !mysqli_query($mysqli, "UPDATE tools SET knife='$knife', other='$other' WHERE person_id='$id'"))  {
die ( "Error-".mysqli_error($mysqli));
}

或者如果你可以更新任何东西或什么都不更新,那么......

mysqli_query($mysqli, "UPDATE persons SET fname='$fname' WHERE id='$id'");
$rowsUpdated = mysqli_affected_rows($mysqli);

mysqli_query($mysqli, "UPDATE tools SET knife='$knife', other='$other' WHERE person_id='$id'");
$rowsUpdated += mysqli_affected_rows($mysqli);
if ($rowsUpdated >= 1){
echo json_encode(array(
'id' => (int)$id,
'fname' => $fname,
'tools' => array(
'knife' => $knife,
'other' => $other
)
));
}

这只是将两个 SQL 语句中更新的总计行相加。

关于php - 检查更新语句是否已经执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033322/

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