SQL,PHP-向下拉函数添加约束

SQL,PHP-向下拉函数添加约束,php,sql,mysqli,Php,Sql,Mysqli,SQL、PHP关于向add函数添加约束的问题 我有一个父母桌上的狗和一个孩子桌上的健康记录 狗 id=主键 健康记录 ==================================== id | fluVax | allergies | memberFK ==================================== memberFK是唯一的,是指向dogs.id的外键 该代码只允许每只狗有一个健康记录。一对一的关系 这段代码可以很好地插入数据 if(!($stmt = $c

SQL、PHP关于向add函数添加约束的问题

我有一个父母桌上的狗和一个孩子桌上的健康记录

id=主键

健康记录

====================================
id | fluVax | allergies |  memberFK
====================================
memberFK是唯一的,是指向dogs.id的外键

该代码只允许每只狗有一个健康记录。一对一的关系

这段代码可以很好地插入数据

if(!($stmt = $conn->prepare("INSERT INTO healthRecord(fluVax, allergies, 
memberfk) VALUES (?,?,?)")))
{
    echo "Prepare failed: "  . $stmt->errno . " " . $stmt->error;
}
}
if(!($stmt->bind_param("ssi",$_POST['fluVax'],$_POST['allergies'], 
$_POST['memberId']))) 
但我确信这是我需要编辑的代码

<p> Dog's Name: <select name="dogId">
<?php
    foreach($dogs as $dog)
    {
        echo "<option value='" . $dog["id"] . "'>" . $dog["name"] . " 
</option>";
    }
?>

    <p>Flu Vax: <input type='date' name='fluVax'/></p>
    <p>Conditions: <input type='text' name='conditions'></p>
<button type="submit">Submit</button>
</form>

这会生成数据库中所有狗的下拉列表,我想改变下拉列表,只显示那些还没有狗的狗,这样每个狗只有一条记录。由于healthRecord.memberfk设置为UNIQUE,因此如果用户尝试为已经有记录的狗添加记录,则会正确返回错误。但是我想要的是一个下拉列表,允许用户只选择没有现有记录的狗

这有点难理解您的问题。。。但我会努力的

所以如果我理解你的意思,每只狗只有一个健康记录。 因此,首先,您应该使healthRecord.memberfk唯一。避免重复输入


第二:你应该选择一只狗,也许在healthRecord上加入一个连接,让拥有健康数据的狗以你需要的方式打印选择或插入数据,并且只打印你需要的数据。

但只适用于没有一个现有健康记录的狗-这是否意味着你从来没有一个以上的健康记录?如果是,则外键位于错误的表中。是的,我忘记说healthRecord.memberfk设置为UNIQUE。如果有人试图为已经有记录的狗添加记录,则返回错误。我将尝试创建一个SELECT语句,就像您所说的那样,它只使用表中没有现有fk的狗填充下拉列表
<p> Dog's Name: <select name="dogId">
<?php
    foreach($dogs as $dog)
    {
        echo "<option value='" . $dog["id"] . "'>" . $dog["name"] . " 
</option>";
    }
?>

    <p>Flu Vax: <input type='date' name='fluVax'/></p>
    <p>Conditions: <input type='text' name='conditions'></p>
<button type="submit">Submit</button>
</form>