我正在尝试遍历所有用户,并从 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/