gpt4 book ai didi

php - 基本连接表和外键

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:27 24 4
gpt4 key购买 nike

我正在为个人发展创建一个图书馆应用程序,并希望进一步了解 MySql。

我目前有两个表 'book' 和 'category'

id   title                    author      category     isbn
---- ------- ---------- ---------- -------
1 Treasure Chest Jim Jones 1 14252637
2 Pirates Boat Sue Smith 2 88447737
3 Adventure Land Harry Jo 3 01918273
4 Winter Week Sam Dill 3 00999337

类别

id       cat_name   
---- -------
1 Horror
2 Kids
3 Fiction
4 Science

我正在做一个简单的搜索,我想在其中显示所有书籍(从书中选择 *),并且我想显示所有书籍及其相应的类别。这有效,但显示类别编号而不是类别名称。

例如

id      title           author      category  isbn
2710 Animals 123 Tiny Touch 2 978-1-84958-877-5
2709 Animal Homes Tiny Touch 2 978-1-84958-880-5
2708 Black and White Usborne 3 978-1-4095-2393-2
2707 Babies Usborne 1 978-1-4095-3575-1

我怎样才能改变这些表以连接 cat_name 和类别?

我尝试在 phpmyadmin 中运行如下命令,但它返回了一个错误;

ALTER TABLE book
ADD FOREIGN KEY (category) REFERENCES category(cat_name);

错误

#1452 - Cannot add or update a child row: a foreign key constraint fails (`sslib`.`#sql-1ab4_1dae`, CONSTRAINT `#sql-1ab4_1dae_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`cat_name`))

PHP

$sql = "SELECT * FROM book";
$res = $conn->query($sql) or trigger_error($conn->error."[$sql]");
while($row = $res->fetch_array()) { //line 101

echo '<tbody>';
echo '<tr>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['title'] . '</td>';
echo '<td>' . $row['author'] . '</td>';
echo '<td>' . $row['category'] . '</td>';
echo '<td>' . $row['isbn'] . '</td>';
echo '<td>' . $row['publicationYear'] . '</td>';
echo '</tr>';
echo '</tbody>';
};

我一直在研究外键和索引,但我似乎无法理解它们。我对此很陌生,所以非常感谢任何帮助。

最佳答案

通过sql join来显示所有对应类别的图书:

select
b.title as 'book_title',
c.cat_name as 'category_name'
from
book b
inner join category c on (c.id = b.category);

当您插入新的图书记录时,您必须确保该类别存在。 MySQL 已经通过提供引用完整性(在您发布的外键中)来解决这个问题。参照完整性不适用于所有引擎。 InnoDB 支持它。首先确保您使用的是 InnoDB,因为 MySQL 5.5 是默认的。

您可能想试试 MySQL Workbench。它支持图形表表示和它们之间的连接,还生成 sql 脚本来创建它们。

enter image description here

关于php - 基本连接表和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27294830/

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