PHP- mysqli->num_rows 总是返回 0,预准备语句



首先,我想说的是,我已经走了所有重复问题。并尝试了建议的更改。

到目前为止,我已经尝试将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

返回语句中的行数

最新更新