php超初心者 掲載中と、掲載停止中のagentsを分けて表示させたい 二回sqlを実行しなくても良い方法が知りたいです。 以下のコードを簡単にやる方法はありますか?
php超初心者 掲載中と、掲載停止中のagentsを分けて表示させたい 二回sqlを実行しなくても良い方法が知りたいです。 以下のコードを簡単にやる方法はありますか? また以下の方法で良いのか教えてほしいです。 $sql1 = 'select * from agents where list_status=1'; $stmt1 = $db->query($sql1); $listed_agents = $stmt1->fetchAll(PDO::FETCH_ASSOC); $sql2 = 'select * from agents where list_status=2'; $stmt2 = $db->query($sql2); $non_listed_agents = $stmt2->fetchAll(PDO::FETCH_ASSOC);
ベストアンサー
こんな感じですかねぇ。事前に(接続時に)PDO::FETCH_ASSOC にしておくことになるでしょうけど・・・ $listed_agents = []; $non_listed_agents = []; foreach ($db->query('select * from agents where list_status=1 or list_status=2') as $row) if ($row['list_status'] === 1) $listed_agents[] = $row; else $non_listed_agents[] = $row; 個人的には2回実行してもさほど無駄でもない気がします。 $stmt = $db->prepare('select * from agents where list_status=?'); $stmt->execute([1]); $listed_agents = $stmt->fetchAll(); $stmt->execute([2]); $non_listed_agents = $stmt->fetchAll(); 後学のために各々で所要時間を計ってみてもいいかもしれませんね。
というか「分けて表示」したいだけなら、$row['list_status'] の値によってどちらの表示用の変数(文字列 or 文字列の配列)に追加するかのだけですよね。 #読みながら echo や print するわけじゃないでしょう?
質問者からのお礼コメント
お早い回答ありがとうございました!
お礼日時:5/11 15:10