使用 LEFT JOIN 通过 Form 插入 MySQL
Use LEFT JOIN inserting into MySQL via Form
我制作了一个表格,其中包含一些手动插入的文本字段。
所有这些字段都填写 Table 1,除了 1。我做了一个 dropmenu 菜单,它调用来自 table 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>
目前一切顺利,下拉菜单提供 select 信息。
我想完成的事情:
我想 link table 1 中的字段到 table 2 中的字段,所以当我更改 table 2 中的值时,像这样说:将 Man 更改为 Male,table 1 中的每个人都将值 Man 更改为 Male。
Table 1个结构:
PersonID 姓名 性别
1 约翰 link 至 table 2
Table2结构:
身份证性别
1男
2 女
有人告诉我为此使用 LEFT JOIN,但我迷路了,我不知道从哪里开始。谁能给我 starts/heads up?
我当前的 INSERT 代码是:
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
返回数据之前,连接不会发挥作用 :)
Table 1 个字段:
id INT(11) UNSIGNED AUTO_INCREMENT
name VARCHAR(100) NOT NULL
gender INT(11) UNSIGNED
Table 2 个字段:
gender_id INT(11) UNSIGNED AUTO_INCREMENT
gender_name VARCHAR(20) NOT NULL
假设您在 table 2 中有两个条目:1 = male
和 2 = female
。
当您插入 Table 1 时,您将使用 1 和 2 而不是 'male' 和 'female.'
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
.
希望这是有道理的。
我制作了一个表格,其中包含一些手动插入的文本字段。
所有这些字段都填写 Table 1,除了 1。我做了一个 dropmenu 菜单,它调用来自 table 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>
目前一切顺利,下拉菜单提供 select 信息。
我想完成的事情:
我想 link table 1 中的字段到 table 2 中的字段,所以当我更改 table 2 中的值时,像这样说:将 Man 更改为 Male,table 1 中的每个人都将值 Man 更改为 Male。
Table 1个结构: PersonID 姓名 性别 1 约翰 link 至 table 2
Table2结构: 身份证性别 1男 2 女
有人告诉我为此使用 LEFT JOIN,但我迷路了,我不知道从哪里开始。谁能给我 starts/heads up?
我当前的 INSERT 代码是:
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
返回数据之前,连接不会发挥作用 :)
Table 1 个字段:
id INT(11) UNSIGNED AUTO_INCREMENT
name VARCHAR(100) NOT NULL
gender INT(11) UNSIGNED
Table 2 个字段:
gender_id INT(11) UNSIGNED AUTO_INCREMENT
gender_name VARCHAR(20) NOT NULL
假设您在 table 2 中有两个条目:1 = male
和 2 = female
。
当您插入 Table 1 时,您将使用 1 和 2 而不是 'male' 和 'female.'
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
.
希望这是有道理的。