ホームページ >バックエンド開発 >PHPチュートリアル >Cache_PHP チュートリアルとして静的変数を使用する
あなたは次のような状況に遭遇したと思います
2 つのテーブル、magazine (雑誌情報) と subscibe (購読情報) があります。subscibe テーブルには、magazine テーブルの番号と関連付けます。閲覧購読情報のリストを作成する場合、このリストには雑誌の名前 (マガジン テーブルの名前フィールド) を表示する列があります。1 つの方法は、join を使用して 2 つのテーブル間に関連付けを作成し、magazine_id を次の値に置き換えることです。 name. ですが、このリストは検索結果であり、SQL のクエリ文を結合することになるので、SQL の結合のロジックが少し複雑になるため、単純に select * from subscibe にする方が良いでしょう。ここで....、その場合、結果セット内のmagazine_idをクエリする方が簡単になります。別の問題は、プログラム内であまりにも多くのクエリを繰り返したくないことです。たとえば、結果には10個のデータがあります。すべて同じmagazine_idに関連するものを設定すると、さらに9つの重複クエリが発生するため、次のようにすることにしました
function MagazineInfoById($magazine_id){
global $db;
static $magazine_info;
if (! isset($magazine_info[$magazine_id]) ){
$magazine_info[$magazine_id] = $db->getRow('select * from Magazine where id = '. $magazine_id);
}
return $magazine_info[$magazine_id] ];
}
while (. ...){
$magazine_info = MagazineInfoById($magazine_id);
....
}
MagazineInfoById() の静的変数 $magazine_info はキャッシュされたフォームになります。場合によっては、クエリの数を大幅に減らし、クエリの繰り返しを避けることができます