さて、今、私は別のクエリからのwhileループ内にクエリを持っています...しかし、私がやろうとしていることを行うためのより効率的な方法が必要です。1つのクエリで以下のスクリプトを実行できますか?そして、それはより効率的でしょうか?(私はそうなると思います)これが私が今持っているものです(実際のコードではありませんが、良い例です):
$sth = $dbh->prepare("SELECT * FROM Bugs LIMIT 5");
$sth->setFetchMode(PDO::FETCH_OBJ);
$sth->execute();
while($row = $sth->fetch()){
$bugId = $row->id;
echo 'Bug Name: ' . $row->name;
echo '<br />';
echo 'Affected Web Browsers: ';
$sth2 = $dbh->prepare("SELECT * FROM AffectedBrowsers WHERE BugId = '$bugId'");
$sth2->setFetchMode(PDO::FETCH_OBJ);
$sth2->execute();
$i = 1;
while($row2 = $sth2->fetch()){
if($i = 1){
echo $row2->browser;
}else{
echo ', ' . $row2->browser;
}
$i++;
}
}
私のテーブルは次のとおりです。1)「バグ」-このテーブルには、リストされているバグごとに1つの行があります。2)「AFfectedBrowsers」-このテーブルには、特定のバグの影響を受けるすべてのブラウザが含まれています。このテーブルは、「AffectedBrowsers」テーブルのbugId列を介して「Bugs」テーブルと関係があります。
注:$ iのインクリメントは、if/elseではなくforループで実行できることを認識しています。
更新:バグごとに1行だけ必要で、そのバグの影響を受けるすべてのブラウザーがリストされている列を結果セットに追加すると思います。