这里总 n00b,第一次发帖,所以请有建设性!我买了一本书来自学 PHP / MySQL——不幸的是,这本书没有得到普遍的赞扬——所以我的进步有点不稳定。
我有两个要链接的表。我想显示表 1 中保存的所有信息(我们称之为记录),但只显示一次。然后,我想检查 Records 中的每个项目是否与表 2 (UserTable) 中的特定字段匹配,如果匹配,则显示一个勾选的复选框,如果不匹配,则显示一个空复选框。
我迄今为止遇到的问题是仅显示记录中存在匹配项的项目,或者显示记录中每个项目的多个实例,其中存在多个匹配项。我已经用下面的代码解决了这些问题 - 但我一直认为必须有更好的方法来做到这一点,也许只有一个链接?
无论如何,这里有一些代码摘录:
$sql = "SELECT * FROM Records";
$res = mysqli_query($mysqli,$sql);
while ($iteminfo = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
$recordid2 = $iteminfo['record_id'];
我省略了从 Records 中提取相关数据并开始构建表的部分,然后:
$sql2 = "SELECT COUNT(*) AS matches FROM UserTable
where usertable.item = '$recordid2' and User_ID = '$current_user_id'";
$res2 = mysqli_query($mysqli, $sql2);
$matches = mysqli_fetch_array($res2, MYSQLI_ASSOC);
$matches2 = $matches['matches'];
if ($matches2) {
$output = "<input type='checkbox' name='test' checked>"; } else {
$output = "<input type='checkbox' name='test'>";
正如我所说,这可行,但感觉有点笨拙 - 我正在为 Records 中的每个项目运行一个单独的嵌套查询,随着时间的推移,它可能会变得非常慢。有没有一种方法可以针对整个查询运行单个查询,该查询会根据 UserTable 中是否存在匹配项来遍历所有行信息(一次)和 0 或 1?我试过使用 DISTINCT 但无法让它工作。