使用左联接通过表单插入MySQL


Use LEFT JOIN inserting into MySQL via Form

我制作了一个表单,其中包含一些手动插入的文本字段。

所有这些字段都填写在表 1 中,但 1 除外。我制作了一个下拉菜单菜单,用于调用表 2 中的信息。

<div>Geslacht</div>
<select name='geslacht'>
<?php 
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { ?>
    <option value="<?php echo $line['Geslacht'];?>"> <?php echo $line['Geslacht'];?> </option>

到目前为止一切顺利,下拉菜单确实选择了信息。

我想完成什么:

我想将表 1 中的字段链接到表 2 中的

字段,因此当我更改表 2 中的值时,例如:将 Man 更改为 Male,表 1 中的每个人都会将值 Man 更改为 Male。

表1结构:人物ID姓名性别约翰一书链接到表2

表2结构:身份证性别1 男2 女

我被告知为此使用左加入,但我很迷路,我不知道从哪里开始。谁能给我启动/提醒?

我目前的插入代码是:

mysql_query("INSERT INTO Persoon (voornaam, tussenvoegsel, achternaam,
        straatnaam, huisnummer, toevoeging, bsnnummer, geboortedatum, geslacht) VALUES ('".$persoon_voornaam."', '".$persoon_tussenvoegsel."', '".$persoon_achternaam."',
         '".$persoon_straatnaam."', '".$persoon_huisnummer."', '".$persoon_toevoeging."', '".$persoon_bsnnummer."', '".$persoon_geboortedatum."', '".$persoon_geslacht."')") or die (mysql_error());
因此

,在您SELECT数据返回之前,联接不会发挥作用:)

表 1 字段:

id INT(11) UNSIGNED AUTO_INCREMENT
name VARCHAR(100) NOT NULL
gender INT(11) UNSIGNED

表 2 字段:

gender_id INT(11) UNSIGNED AUTO_INCREMENT
gender_name VARCHAR(20) NOT NULL

因此,假设您在表 2 中有两个条目:1 = male2 = female

插入表 1 时,将使用 1 和 2,而不是"男性"和"女性"。

INSERT INTO table1 (name, gender) VALUES ('Josh', 1);

当您返回SELECT信息时,您将使用以下LEFT JOIN

SELECT * FROM table1 t1 LEFT JOIN table2 t2 ON t1.gender = t2.gender_id WHERE t1.name = 'Josh';

然后在您的结果集中,您将拥有所有正常数据以及从table2链接的任何数据,即 gender_name .

希望这是有道理的。