php预处理获取改变行数,php – 使用MySQLi预处理语句时无法获取行数...
如果要使用mysqli_stmt :: $num_rows(即,檢查預(yù)準備語句中的行數(shù)),則需要在執(zhí)行預(yù)準備語句之后使用$stmt-> store_result(),然后才能檢查其數(shù)量行.這意味著在我們檢查返回的行數(shù)之前,結(jié)果存儲在內(nèi)存中.
$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(在你從語句結(jié)果轉(zhuǎn)換的MySQLi結(jié)果上),你需要在執(zhí)行$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()) {
// ....
最后,他們應(yīng)該最終做同樣的事情 – 提供原始準備查詢返回的一些行.
注意
請務(wù)必注意,您不能在同一語句中使用store_result()和get_result().這意味著在第一個示例中,您無法轉(zhuǎn)換為mysqli-result對象(通過使用get_result(),它允許您使用標準的fetch_assoc()方法).由于store_result()將結(jié)果存儲到內(nèi)存中,因此get_result()無需轉(zhuǎn)換,反之亦然.
這意味著如果使用store_result(),則需要通過statement-fetch,mysqli_stmt :: fetch()獲取并通過mysqli_stmt :: bind_result()綁定結(jié)果.如果使用get_result(),則應(yīng)檢查生成的MySQLi結(jié)果對象上的行數(shù)(如第二個示例所示).
你應(yīng)該為此構(gòu)建你的代碼,這樣你只需要使用其中一個.
話雖如此,使用評論中建議的affected_rows不是正確的工具 – 根據(jù)mysqli_stmt :: $affected_rows上的手冊(同樣適用于常規(guī)查詢,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.
總結(jié)
以上是生活随笔為你收集整理的php预处理获取改变行数,php – 使用MySQLi预处理语句时无法获取行数...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html列表拖拽排序插件,JS拖拽排序插
- 下一篇: 2014年二级c语言,2014年计算机二