マスター テーブルからレコードをフィルター処理して追加する必要があります。このテーブルには数百万のレコードがあります。最初に私が試していた:
$result = mysqli_query($myConnection, 'SELECT * FROM master');
while($record = mysqli_fetch_assoc($result))
{
if ($myConditionsMet)
{
mysqli_query($myConnection, 'INSERT INTO filtered VALUES blahblahblah');
}
}
今私が直面した最初の問題は、メモリオーバーフローが発生したことです。(はい、私は以前、通常、Php はすべてのレコードを取得するのではなく、1 つずつ取得すると信じていました。したがって、1 つのレコードが前のレコードを消去するため、メモリ使用量は最小限ですが、人は常に何か新しいことを毎日学習します)。便利なフラグ ( 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
. 今のところ、それをどうするかは想像できません。マスターのレコードを $array に収集しても、メモリ オーバーフローが発生します。SELECT FROM でフェッチしているときに INSERT INTO を実行することが許可されていないなんて信じられません。なぜ 2 つの衝突が起こるのかわかりません。意味がありません。