私は同僚から、現在および/または以前の結果を失うことを心配することなく、無限の量のネストされた (ループされた) クエリを処理するPHP関数を Web アプリケーションにプラグインして処理するように依頼されました。
数分後に思いついたコードは次のとおりです。問題なく動作しているようですが、まだ次の質問があります。
- mysqli_prepare関数を再発明していますか?
- このようにネストされたクエリを処理するのは賢明でしょうか?
- 次のアプローチを使用することの長所と短所は何ですか?
実際の機能:
function qn($query) {
global $db;
$rand_var = 'r' . mktime() . mt_rand();
$$rand_var = $db->query($query);
return $$rand_var;
}
そして実際に:
if (($db instanceof mysqli) != true) {
$db = new mysqli(DB_ADDRESS, DB_USER, DB_PASS, DB_NAME);
}
$a = qn('SELECT DISTINCT ***');
while ($row_a = $a->fetch_assoc()) {
// do some stuff
$b = qn('SELECT ***' . $row_a['foo']);
while ($row_b = $b->fetch_assoc()) {
$c = qn('SELECT COUNT(id)' . $row_b['bar']);
// keep going ...
}
}
注: SQL クエリはサンプルです。