首先,我想说的是,我已经走了所有重复问题。并尝试了建议的更改。
到目前为止,我已经尝试将num_rows
更改为num_rows()
并使用store_result();
并使用affected_rows()
。
也在execute()
store_result();
我认为可能还有其他一些我无法弄清楚的问题
$conn->autocommit(false);
if ($sucess){
$stmt2 = $conn->prepare("UPDATE e_eventqueue SET e_urlfil=? WHERE e_id=?
AND u_id=?");
$stmt2->bind_param("iis",$e_urlfil,$e_id,$u_id);
if($stmt2->execute()){
$stmt2->store_result();
echo "true";
echo $stmt2->num_rows; // <- this always return 0 even when its not
$stmt2->close();
$conn->commit();
}
else{
$conn->rollback();
echo "rollback";
}
}
1st:要更新查询,您需要检查affected_rows
。不是num_rows
2nd:执行像此$row_count= $stmt2->affected_rows;
之后,如果查询成功执行,但数据上没有更改意味着它将return 0
。
if($stmt2->execute()){
echo $stmt2->affected_rows;
}
affected_rows:
affect_rows适用于 insert,update,delete
num_rows:
num_rows适用于select
如上所述,检查文档:
http://php.net/manual/mysqli-stmt.afterced-rows.php
返回最后执行的语句
更改,删除或插入的行总数
http://php.net/manual/mysqli-stmt.num-rows.php
返回语句中的行数