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 个笔记

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