2024 PHP Conference Japan

mysqli::reap_async_query

mysqli_reap_async_query

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

mysqli::reap_async_query -- mysqli_reap_async_query從非同步查詢取得結果

說明

物件導向風格

public mysqli::reap_async_query(): mysqli_result|bool

程序式風格

mysqli_reap_async_query(mysqli $mysql): mysqli_result|bool

從非同步查詢取得結果。

注意:

僅適用於 mysqlnd

參數

mysql

僅限程序式風格:由 mysqli_connect()mysqli_init() 返回的 mysqli 物件

返回值

失敗時返回 false。對於產生結果集的成功查詢,例如 SELECT、SHOW、DESCRIBEEXPLAINmysqli_reap_async_query() 將返回 mysqli_result 物件。對於其他成功的查詢,mysqli_reap_async_query() 將返回 true

錯誤/例外

如果啟用了 mysqli 錯誤報告(MYSQLI_REPORT_ERROR)且請求的操作失敗,則會產生警告。此外,如果模式設定為 MYSQLI_REPORT_STRICT,則會改為拋出 mysqli_sql_exception

參見

新增筆記

使用者貢獻的筆記 1 則筆記

5
eric dot caron at gmail dot com
14 年前
請記住,mysqli::reap_async_query 僅在 SELECT 之類的查詢上返回 mysqli_result。對於您可能對 affected_rows 或 insert_id 等內容感興趣的查詢,您無法像 mysqli::poll 中的範例所示,使用 mysqli::reap_async_query 的結果。對於 INSERT/UPDATE/DELETE 查詢,可以透過 mysqli::poll 函數中第一個陣列的關聯鍵存取與查詢相對應的資料。

因此,不要使用
<?php
foreach ($links as $link) {
if (
$result = $link->reap_async_query()) {
print_r($result->fetch_row());
mysqli_free_result($result);
$processed++;
}
}
?>

資料可透過以下方式存取
<?php
foreach ($links as $link) {
if (
$result = $link->reap_async_query()) {
//適用於 SELECT 語法
if(is_object($result)){
print_r($result->fetch_row());
mysqli_free_result($result);
}
//適用於 INSERT/UPDATE/DELETE 語法
else {
print_r($link);
}
$processed++;
}
}
?>
To Top