Мне нужно отфильтровать и добавить записи из основной таблицы. В этой таблице миллионы записей. Сначала я пытался:
$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
. Пока я не представляю, что с этим делать. Даже я собираю в массив $ записи мастера, по-прежнему переполнение памяти. Я не могу поверить, что мне не разрешено запускать INSERT INTO при загрузке с помощью SELECT FROM, я не могу понять, почему два столкновения, это не имеет смысла.