私はここでかなり複雑な状況にあります。そのページに入るときに70000回以上ロールオーバーするループ内にSELECTクエリを配置しない限り、これを解決するためのより良い方法を見つけることはできません(心配しないでください、私array_chunk
は配列をページに分割するために使用します)。ここでクエリを使用すると、これはリソースキラーになると思います。このため、ここで質問をします。
私はループする必要があるこの大きな配列を持っています:
$images = scandir($imgit_root_path . '/' . IMAGES_PATH);
$indexhtm = array_search('index.htm', $images);
unset($images[0], $images[1], $images[$indexhtm]);
これで、内のファイル(画像)のすべてのファイル名を含む配列ができましたIMAGES_PATH
。ここで問題が発生します。
登録ユーザーの画像が私のデータベースにリストされているため、これらの画像の一部はデータベースに登録されています。user_id
次に、上記の配列で指定された画像名に基づいてを取得する必要があります。
ループ内で私は単にこれをしました:
foreach ($images as $image_name)
{
$query = $db->prepare('SELECT user_id FROM imgit_images WHERE image_name = :name');
$query->bindValue(':name', $image_name, PDO::PARAM_STR);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
$user_id = $row['user_id'];
echo $user_id;
}
これは問題なく機能しますが、効率は0になります。これを使用して、ループ内で別のクエリが必要になるなどuser_id
、テーブルから他のものを取得することを計画しています。imgit_users
username
これは多すぎるので、これに対処するためのより簡単な方法が必要です。
ループ内に入る前にそれらを取得user_id
してループ内で使用する方法はありますか?
これはからのテーブル構造ですimgit_images
:
これは次のスキーマですがimgit_users
: