php - 如何运行无缓冲的 SELECT 并同时运行另一个 INSERT?(PHP,MYSQLI_USE_RESULT,命令不同步;您现在无法运行此命令)
问题描述
我必须从主表中过滤和添加记录。该表有数百万条记录。首先我尝试:
$result = mysqli_query($myConnection, 'SELECT * FROM master');
while($record = mysqli_fetch_assoc($result))
{
if ($myConditionsMet)
{
mysqli_query($myConnection, 'INSERT INTO filtered VALUES blahblahblah');
}
}
现在我面临的第一个问题是内存溢出。(是的,我曾经相信通常 Php 不会得到所有的记录,而是一个接一个,所以这是一个最小的内存使用,因为一个记录会擦除以前的记录,但是这个人每天都会学到新的东西)。我遇到了一个有用的标志(MYSQLI_USE_RESULT),所以:
$result = mysqli_query($myConnection, 'SELECT * FROM master', MYSQLI_USE_RESULT);
while($record = mysqli_fetch_assoc($result))
{
if ($myConditionsMet)
{
mysqli_query($myConnection, 'INSERT INTO filtered VALUES blahblahblah');
}
}
但这一次我得到一个悲惨的错误:Commands out of sync; you can't run this command now
。现在,我无法想象如何处理它。即使我将master的记录收集到$array中,仍然内存溢出。我不敢相信我不允许在使用 SELECT FROM 获取时运行 INSERT INTO,我看不出两者发生冲突的方式,这没有任何意义。
解决方案
推荐阅读
- python-3.x - 对具有不同字节值的列求和的最佳方法是什么?(男、女、男)
- android - Firebase 远程配置未在语言环境更改时更新
- java - Android 自定义对话框角半径
- javascript - 在页面 python selenium 上执行另一个操作时,使用 JS 键入输入似乎会删除键入的值
- php - 如何解决这个 laravel 布局问题?
- python - 使用 pandas 库根据基于其他数据框的计算在一个数据框中添加列
- regex - 重定向 [R=301] 在 .htaccess 中结束下一次迭代?
- javascript - 如何将我的数据库中的发送数据添加到 html 中的文本区域表单
- python - 如何为 Scipy/Numpy 安装 64 位 lapack
- python - 如何将这些词添加到我的视频帧中?