現在、PDO クエリの結果を希望どおりに表示する方法を見つけるのに苦労しています。
自分で設定した小さなタスクを通じて、PHP/PDO と MySQL を学習しているところです。選択クエリは以下のとおりです。
try{
$sth=$dbh->prepare("SELECT backup.bakLoc, client.cliName, project.prjName, assistant.astName, session.sessDate, session.stdID, backup.bakID, backup.bakName, backup.bakDate, backup.bakKeep, backup.recLoc, backup.bakDeleted
FROM session
INNER JOIN studio ON session.stdID=studio.stdID
INNER JOIN engineer ON session.engID=engineer.engID
INNER JOIN assistant ON session.astID=assistant.astID
INNER JOIN client ON session.cliID=client.cliID
INNER JOIN project ON session.prjID=project.prjID
INNER JOIN composer ON session.cmpID=composer.cmpID
INNER JOIN fixer ON session.fixID=fixer.fixID
LEFT JOIN backup ON session.bakID=backup.bakID
WHERE session.stdID = :stdID AND (ISNULL(backup.bakDeleted) OR backup.bakDeleted =0)
ORDER BY session.stdID,backup.bakLoc,sessDate; ");
$sth->bindParam(':stdID', $_GET['studio'], PDO::PARAM_INT);
$sth->execute();
}
catch(PDOException $e) {
print $e->getMessage();
}
私が抱えている問題は、このクエリの結果を出力する方法に関連しています。
出力を backup.bakLoc 列でグループ化します。その列は、NULL、1、2、または 3 の 4 つの結果のいずれかを持つことができます。さまざまな句を使用して 4 つのクエリを設定するのではなく、結果のセットごとに個別のヘッダーを使用して、これを html に出力したいと考えています。過去にそれを達成するために、各列を独自の配列にダンプしてから、いくつかの if ステートメントを使用して出力を繰り返し、列の値が変化するのを監視するか、WHERE 句を変更して各見出しの下でクエリを実行するだけでした。もっと直接的な方法があるはずです。
ということで、こんなページに
<h1>Not Backed Up</h1>
//all results of when $row['bakLoc'] is NULL or 0
<?=$row['bakName']; ?><br />
<h1>backup location 1</h1>
//all results of when $row['bakLoc'] is 1
<?=$row['bakName']; ?><br />
などなど
私は PDO::FETCH_GROUP で遊んでいますが、思い通りに動作させることができません。複数のクエリを必要とせずに、このような結果を分割するための正しい方向に誰かが私を向けることができることを願っています. (もちろん、複数のクエリが最善の方法でない限りはそうです。)
前もって感謝します。