我目前很难找到一种方法来以我想要的方式显示 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();
}
我遇到的问题与您输出此查询结果的方式有关。
id 喜欢按 backup.bakLoc 列对输出进行分组。该列可以有四个结果之一,NULL、1,2 或 3。我想将其输出到 html,并为每组结果设置一个单独的标题,而不是设置 4 个带有不同子句的查询。为了在过去完成它,我只是将每列转储到自己的数组中,然后用几个 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 但我无法让它像我想要的那样工作。我希望有人可以为我指出正确的方向,以便在不需要多个查询的情况下拆分这样的结果。(当然,除非多个查询是最好的方法。)
提前致谢。