php—在t1中插入新书,并将t2中的现有作者加入本书

sigwle7e  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(278)

我是一名学生,刚刚开始学习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,它将插入图书和作者。
谢谢您。

envsm3lx

envsm3lx1#

当你编辑你的文章时,我想我明白你的意思。但在我回答你的问题之前,你需要改变一些事情。
您的book表和author表都相互链接。您只希望一个链接到另一个。因为一本书总是有一个作者,你需要给这本书一个作者id,但是一个作者(几乎总是)有更多的书。因为每列只能保存一个值,所以应该删除 book id 来自作者。如果你发现自己处于两张table都可以有一张以上的情况(你会的),你需要做一个决定 many-to-many 关系。
如果你想让人们“选择”一个作者,你不应该让他们输入这个名字(除非你使用jqueryajax调用,但是如果你刚开始做这些,我不推荐那些)。我建议使用php创建一个包含所有作者的下拉列表,如果有很多作者,还可以查看数据列表(请记住,可以提交数据列表,而无需从列表中实际选择一个项目,因此您需要检查它们选择的内容是否实际存在
最后,您不需要每次添加一本书时都添加其他作者。因为你可以用它的id把书和作者联系起来。
所以我建议你做的步骤是:
将“作者”输入字段重新创建到 HTML 选择框或数据列表
检查所选作者是否存在(检查查询是否产生一行)
( SELECT * FROM authors WHERE id = :id )使用id作为datalist或select语句中的值
从找到的作者中添加具有所选id的书籍

相关问题