日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php预处理获取改变行数,php – 使用MySQLi预处理语句时无法获取行数...

發布時間:2025/3/12 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php预处理获取改变行数,php – 使用MySQLi预处理语句时无法获取行数... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果要使用mysqli_stmt :: $num_rows(即,檢查預準備語句中的行數),則需要在執行預準備語句之后使用$stmt-> store_result(),然后才能檢查其數量行.這意味著在我們檢查返回的行數之前,結果存儲在內存中.

$stmt = $conn->prepare($sql);

$stmt->bind_param('ss',$log_username,$log_username);

$stmt->execute();

$stmt->store_result(); // Need to store the result into memory first

if ($stmt->num_rows) {

// ...

但是,如果你想使用mysqli_result :: $num_rows(在你從語句結果轉換的MySQLi結果上),你需要在執行$result = $stmt-> get_result();之后這樣做,并使用$result – > num_rows;,如下所示.

$stmt = $conn->prepare($sql);

$stmt->bind_param('ss',$log_username,$log_username);

$stmt->execute();

$result = $stmt->get_result();

if ($result->num_rows) {

while ($row = $result->fetch_assoc()) {

// ....

最后,他們應該最終做同樣的事情 – 提供原始準備查詢返回的一些行.

注意

請務必注意,您不能在同一語句中使用store_result()和get_result().這意味著在第一個示例中,您無法轉換為mysqli-result對象(通過使用get_result(),它允許您使用標準的fetch_assoc()方法).由于store_result()將結果存儲到內存中,因此get_result()無需轉換,反之亦然.

這意味著如果使用store_result(),則需要通過statement-fetch,mysqli_stmt :: fetch()獲取并通過mysqli_stmt :: bind_result()綁定結果.如果使用get_result(),則應檢查生成的MySQLi結果對象上的行數(如第二個示例所示).

你應該為此構建你的代碼,這樣你只需要使用其中一個.

話雖如此,使用評論中建議的affected_rows不是正確的工具 – 根據mysqli_stmt :: $affected_rows上的手冊(同樣適用于常規查詢,mysqli :: $affected_rows):

Returns the number of rows affected by INSERT, UPDATE, or DELETE query.

This function only works with queries which update a table. In order to get the number of rows from a SELECT query, use mysqli_stmt_num_rows() instead.

總結

以上是生活随笔為你收集整理的php预处理获取改变行数,php – 使用MySQLi预处理语句时无法获取行数...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。