我是一名学生,刚刚开始学习php和mysql。如果这篇文章有任何错误,我深表歉意。
我花了好几个小时试着自己做这件事。。感觉很傻。抱歉,我没有找到任何其他问题可以解决这个问题。拜托,我怎样才能让它工作?
我有两个带有自动增量ID的表:
表1
bookid | bookTitle | authorid 1 | book1 | 1
表2
authorid | authorname| bookid 1 | author1 | 1
我有一个表格,上面有书的输入值和作者的输入值,如何插入这本新书并获得现有作者的信息?在下面查找我的一些代码,这不是全部代码,我想我只是缺少了在表2中查找作者姓名并插入书的逻辑查询。我想在这本书中加入t2中现存的作者。
// dbFunction file
function addBook($booktitle, $name)
$sql = "INSERT INTO book(bookTitle) VALUES (:booktitle)";
$sql = "INSERT INTO author(Name) VALUES (:name)
// controller
require ("dbFunctions.php");
if($_POST['action_type'] == 'add'){
$query = $conn->prepare( "SELECT authorname FROM author WHERE authorname = :name");
$query->bindvalue(":name", $name);
$query->execute();
if( $query->rowCount() > 1 ) {
$querySuccess = addBook($booktitle, $authorname) // calling function
如果($query->rowcount()>1,它将插入图书和作者信息,即使它存在,它也将复制作者和ID。
如果($query->rowcount()<1,它将插入图书和作者。
谢谢您。
1条答案
按热度按时间envsm3lx1#
当你编辑你的文章时,我想我明白你的意思。但在我回答你的问题之前,你需要改变一些事情。
您的book表和author表都相互链接。您只希望一个链接到另一个。因为一本书总是有一个作者,你需要给这本书一个作者id,但是一个作者(几乎总是)有更多的书。因为每列只能保存一个值,所以应该删除
book id
来自作者。如果你发现自己处于两张table都可以有一张以上的情况(你会的),你需要做一个决定many-to-many
关系。如果你想让人们“选择”一个作者,你不应该让他们输入这个名字(除非你使用jqueryajax调用,但是如果你刚开始做这些,我不推荐那些)。我建议使用php创建一个包含所有作者的下拉列表,如果有很多作者,还可以查看数据列表(请记住,可以提交数据列表,而无需从列表中实际选择一个项目,因此您需要检查它们选择的内容是否实际存在
最后,您不需要每次添加一本书时都添加其他作者。因为你可以用它的id把书和作者联系起来。
所以我建议你做的步骤是:
将“作者”输入字段重新创建到
HTML
选择框或数据列表检查所选作者是否存在(检查查询是否产生一行)
(
SELECT * FROM authors WHERE id = :id
)使用id作为datalist或select语句中的值从找到的作者中添加具有所选id的书籍