gpt4 book ai didi

php - 多到多关系数据库不工作

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

我正在自己研究关系数据库,在阅读了一些文章后,我在实现它们时遇到了困难。

由于我缺乏使用关系数据库的经验,我认为我的错误可能出现在以下 3 个(如果不是全部 3 个)步骤中的任何一个:

  • 表格创建
  • 值插入
  • 查询调用

我应该指出没有任何语法错误或类似错误。

我们讨论的是我理解上的错误,所以我将详细解决这个问题。

表格:

为了抽象,我选择了人和他们喜欢的饮料(一个人可以喜欢很多饮料,一种饮料可以被很多人喜欢。

这是表 People 的代码(它有 2 个名称和一个主键):

CREATE TABLE `People` 
(
`PeopleID` INT NOT NULL AUTO_INCREMENT,
`FirstName` VARCHAR(25),
`LastName` VARCHAR(25) NOT NULL,
PRIMARY KEY (`PeopleID`)
)

这是表 Drinks(饮料的名称,菜单中的一些数字或类似的东西,例如主键)

CREATE TABLE `Drinks` 
(
`DrinksID` INT NOT NULL AUTO_INCREMENT,
`Code` VARCHAR(10) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL,
`Name` VARCHAR(100) NOT NULL,
PRIMARY KEY (`DrinksID`)
)

最后是表格 PeopleDrinks:

CREATE TABLE `PeopleDrinks` 
(
`DrinksID` INT NOT NULL default 1,
`PeopleID` INT NOT NULL default 1,
PRIMARY KEY (`DrinksID`,`PeopleID`)
)

注:来自here我看到了第三张表的示例,几乎复制了它。

值插入:

人员输入:

INSERT INTO People (FirstName, LastName) VALUES ('John', 'Smith')
INSERT INTO People (FirstName, LastName) VALUES ('Sam', 'Johnson')
INSERT INTO People (FirstName, LastName) VALUES ('Michael', 'Morgan')

饮料输入:

INSERT INTO Drinks (Code, Name)VALUES ('#543', 'Beer')
INSERT INTO Drinks (Code, Name) VALUES ('#132', 'Vodka')
INSERT INTO Drinks (Code, Name) VALUES ('#123', 'Wine')

PeopleDrinks 输入:

注意:饮料的id是4、5、6。不是1、2、3。

INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (1, 4)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (2, 5)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (3, 6)

以上我们将最喜欢的一种饮料送给每个人。下面我们将让一个人喜欢所有的饮料:

INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (1, 5)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (1, 6)

最后是查询调用:

//Consider $link an established, working connection to the database
$result = mysqli_query($link, "SELECT
`People`.*
FROM
`People`
JOIN
`PeopleDrinks` ON `People`.`PeopleID` = `PeopleDrinks`.`PeopleID`
WHERE
`PeopleDrinks`.`DrinksID` = 5");

while($row = mysqli_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br/>";
}

上面的代码,应该打印喜欢 id 为 5 的饮料的任何人的名字。我没有收到错误,但我没有得到任何输出。

最佳答案

你说饮料的id是4,5,6在你使用过的INsert中

INSERT INTO PeopleDrinks (DrinksID, PeopleID)VALUES (1, 4)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (2, 5)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (3, 6)

饮料 ID(第一个数字)是 1、2、3 而不是 4、5、6 或类似的东西。我认为你的顺序是错误的。

关于php - 多到多关系数据库不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535960/

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