<div class="questions">
<label letter="green ">Hello World!</label>
</div>
是一种奇怪的行为。如果mysqli_affected_rows
更新,它将不会返回1,可能由fname
的2倍引起。如果另一个字段更新,我可以得到1。
mysqli_query
那么现在如何在我的情况下返回更新的行?
答案 0 :(得分:1)
您的假设是正确的,因为第二个查询已经运行,这会产生不同的结果,所以最好的做法是将代码稍微重构为......
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行,我认为还可以。)
虽然我也建议查看预准备语句并绑定值,而不是直接将值放入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语句中更新的总行数相加。