gpt4 book ai didi

php - 如何用外键填充子表 - MySql

转载 作者:行者123 更新时间:2023-11-29 04:34:44 25 4
gpt4 key购买 nike

我正在处理 MySQL 数据库。我是新手,这就是我遇到问题的原因。问题是用引用父表的外键填充子表。我有两个表employee,其中包含以下列

  • id 作为主键,
  • 名字
  • 姓氏
  • 出生日期

和一个包含以下列的借用

  • ref为主键
  • employId 作为外键

employeeId 引用了 employee 表的主键 id。所以简单地说,这意味着具有相同 ID 的一名员工可以借多本书。当我将一些数据插入到员工表中时,它被插入了,但是当我必须将数据插入到借用的表中时,我必须手动将值插入到 employeeId 列中。它不应该自动填充吗?或者我误解了外键的概念。

我的 SQL 代码

  $uname = "root";
$pass = "";
$sname ="localhost";
$db ="nady";
//Making database connection
$con = mysqli_connect($sname,$uname,$pass,$db);

$t1 = "CREATE TABLE IF NOT EXISTS employee (
id smallint(5) unsigned AUTO_INCREMENT NOT NULL,
firstname varchar(30),
lastname varchar(30),
birthdate date,
PRIMARY KEY (id)
) ENGINE=InnoDB";
$con->query($t1);



$t2 = "CREATE TABLE IF NOT EXISTS borrowed (
ref int(10) unsigned NOT NULL auto_increment,
employeeid smallint(5) unsigned NOT NULL,
book varchar(50),
PRIMARY KEY (ref),
FOREIGN KEY (employeeid) REFERENCES employee(id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB";
$con->query($t2);
if(!$con->query($t2)){
echo $con->error;
}


$i1 = "INSERT INTO employee VALUES(NULL,\"Nadeem\",\"Ahmad\",22)";
$con->query($i1);

$i2 = "INSERT INTO borrowed VALUES(NULL,1,\"Ahmad\")";
$con->query($i2);
if(!$con->query($i2)){
echo $con->error;
}

Simple what I need is ; For example an employee with id 1. Who borrowed 3 books. So in the borrowed table the employeeId column will have three rows with values 1 and different books name. My point is how would I populate the employeeId column when I am inserting the data into it. Let say, John have have borrowed three books and have id 1 then how would I insert data to borrowed table with employeeId of john. I need the query for it. and also query to retrieve the books borrowed by john.

最佳答案

外键用于链接两个表,表示某列中的字段(employId from borrowed,在你的例子中)指的是另一个表的 PRIMARY KEY(id from employee) .

当您在 borrowed 中插入新行时,您必须指明正在拿走那本书的用户,才能将其插入该行。您必须了解正在执行此操作的用户。如果您有外键,则需要该用户的 ID,这应该是他的唯一标识符。要插入 John 拿了一本书,您需要知道 John 的 ID 是 1。

如果用户已经在您的 employee 表中并且您知道他的名字和姓氏,您可以通过简单的选择获取 ID...

SELECT id FROM employee WHERE first_name='John' AND last_name='Smith'

...然后你可以使用获得的id进行插入。

如果是新用户,需要先将用户添加到employee中,然后获取新的id,然后在borrowed中插入新行,这样就不用必须重新查询 employee 表以获取新 ID,您可以使用 PHP mysqli::$insert_id/mysqli_insert_id 函数,即给你最后一个查询的主键。例如……

$con->query("INSERT INTO employee (first_name,last_name) VALUES ('Mark','Whatever')");
$newemployeeid = $con->insert_id;
$con->query("INSERT INTO borrowed (employeeid,book) VALUES (".$newemployeeid.",'Awesome Book Title')");

希望对你有帮助

关于php - 如何用外键填充子表 - MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46499823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com