【发布时间】:2018-12-17 12:56:43
【问题描述】:
我有 2 张桌子:
用户
------------------------------------
| id (PK) | password | name | role |
------------------------------------
狗
-------------------------------------------
| dogid (PK) | userid (FK : id) | dogname |
-------------------------------------------
我制作了一个表单,您可以在其中将用户链接到狗,但每个用户只能拥有 1 条狗。我制作了一个组合框,您可以在其中选择一个用户,将其链接到一只狗。这行得通
<?php
$sql = "SELECT * FROM users INNER JOIN dogs ON users.username = dogs.userid WHERE users.role = 'dogowner' ORDER BY name";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
?>
<select id="gebrid" name="gebrid">
<?php foreach($result as $pers): ?>
<option value="<?= $pers['username']; ?>"><?= $pers['name']; ?></option>
<?php endforeach; ?>
</select>
上面的代码选择了所有角色为“dogowner”的用户。我想要第二个 WHERE 条件,它只选择没有狗的用户。
这可能吗,还是我必须更改我的数据库?
【问题讨论】:
-
基本上,您创建的是每只狗只能有一个主人(与您的描述相反)。为了符合您的描述,我认为外键应该在
users上并允许NULL(= 选择没有狗的用户的条件) -
INNER JOIN dogs ON users.username = dogs.userid显示的表结构不起作用,因为表users中没有username。我认为users.id = dogs.userid是正确的
标签: php mysql sql pdo combobox