在t1中插入新书,并包括从T2开始的现有作者

时间:2018-11-12 00:49:09

标签: php mysql forms function insert

我是一名学生,我刚刚开始使用php和mysql。如果对此帖子有任何错误,我深表歉意。
我已经花了几个小时尝试自己做..感觉很蠢。 抱歉,我没有找到其他可以解决此问题的问题。 拜托,我该如何工作?

我有2个具有auto_increment ID的表:

表1

bookid | bookTitle | authorid

1 | book1 | 1

表2

authorid | authorname| bookid

1 | author1 | 1

我有一个表格,其中包含书籍的输入值和作者的输入值,如何插入这本新书并获得现有作者的信息? 在我的代码的下面找到一些代码,这不是全部代码,我想我只是缺少逻辑查询,无法在表2中找到作者姓名并将书插入其中。 我想将t2中存在的authorid包括到这本书中。

// 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

if($ query-> rowCount()> 1,即使存在,也会插入书籍和作者信息,并复制作者和ID。

if($ query-> rowCount()<1,它将插入书籍和作者。

谢谢。

1 个答案:

答案 0 :(得分:-1)

在您编辑帖子时,我想我理解您的意思。但是,在我可以回答您的问题之前,您需要进行一些更改。

  • 您的书表和作者表都相互链接。您只希望一个链接到另一个。因为一本书总是有一位作者,所以您需要为该书提供一个作者ID,但是一个作者(几乎总是)有更多本书。由于每列只能保存一个值,因此应从作者中删除book id。如果您发现自己在两个表之间可能有多个表(您将拥有一个表)的情况,则需要制作一个many-to-many relation
  • 如果您希望人们“选择”一个作者,则不应让他们键入名称(除非您使用jquery ajax调用,但如果您刚开始使用这些功能,我不建议这样做)。我建议使用php创建一个包含所有作者的下拉列表,如果有很多作者,您还可以查看datalists。 (请记住,数据列表可以在不实际从列表中选择一个项目的情况下提交,因此您需要检查他们是否选择了actuallu)
  • 最后,您无需每次添加书都添加其他作者。因为您可以使用书的ID将该书链接到作者。

因此,我建议您执行的步骤是:

  1. 将作者输入字段重新创建到HTML select box或数据列表
  2. 检查所选作者是否存在(检查查询是否排成一行)
    SELECT * FROM authors WHERE id = :id)将ID用作数据列表或select语句中的值
  3. 添加从找到的作者处选择的ID的书