php - 如何在迭代使用 mysqli_use_result 返回的行时执行 mysqli 查询? (PHP)

标签 php mysql sql mysqli

我正在尝试遍历所有用户,并从 MySQL 数据库上的帐户表中调用每个用户名的函数。

一开始,我尝试过:

$result = mysqli_query($mysqli, "SELECT username FROM accounts");
while ($row = $result->fetch_assoc()) {
    try {
        getFollowerData($row["username"], $mysqli, $ig);    
    } catch (Exception $e) {
        echo "$e \n";
    }
}

但是这使用了太多内存,因为表中有超过 400 万条记录。

所以我尝试了:

$result = mysqli_query($mysqli, "SELECT username FROM accounts", MYSQLI_USE_RESULT);
while ($row = $result->fetch_assoc()) {
    try {
        getFollowerData($row["username"], $mysqli, $ig);    
    } catch (Exception $e) {
        echo "$e \n";
    }
}

但是,当我这样做时,我得到:

error: Commands out of sync; you can't run this command now

因为我有一行:

$result = mysqli_query($mysqli, $insertFollowerData);

在我的 getFollowerData() 函数中,这意味着我正在尝试进行 SQL 查询,同时我仍在进行第一个查询以从帐户中获取所有用户名。

有什么办法可以同时进行这些查询吗?

最佳答案

您可以使用内部左连接从数据库中获取关注者数据,而不是在循环中调用此函数( getFollowerData($row["username"], $mysqli, $ig)) 。您可以使用限制数据堆并通过分页使用延迟加载概念来显示这些数据

$result = mysqli_query($mysqli, "SELECT username, followerdatacolumns FROM accounts LEFT JOIN follower_data_table_name ", MYSQLI_USE_RESULT);
while ($row = $result->fetch_assoc()) {
    try {
         // Your result  
    } catch (Exception $e) {
        echo "$e \n";
    }
}

关于php - 如何在迭代使用 mysqli_use_result 返回的行时执行 mysqli 查询? (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592088/

相关文章:

php - cURL 无法连接到主机,但它连接到我的域地址

php - Laravel/Eloquent 5 事务回滚不支持保存

php - ANDROID:执行 doInBackground 时发生错误

MYSQL - 返回的行数与连接数?

mysql - 如何在 MySQL 查询中获取给定月份的第 N 个工作日的日期?

sql - 如何确定 mysql 数据库的类型 : whether it is InnoDB or MyISAM?

PHP 在 POST 之前重新格式化日期

php - 将 php 变量导入样式表

java - 将 AUTO_INCREMENT 添加到大表中的现有列

java - IllegalSelectQueryException 和 InvalidDataAccessApiUsageException