Php MYSQL使用另一个表中的外键将数据插入表中

Php MYSQL使用另一个表中的外键将数据插入表中,php,html,mysql,Php,Html,Mysql,我有两张桌子:书和借来的书 Book表中有Book\u ID | Book Name 借书有学生ID |书名 两个表中的书名都已编入索引 我将Book表的值添加到HTML表单select/option中,它正在被读取,但问题是当我尝试插入值时,它没有读取选项名称或值 HTML: <select id="heard" class="form-control"> <option value="">Choose Book</option> <?php req

我有两张桌子:
借来的书

Book
表中有
Book\u ID | Book Name

借书
学生ID |书名

两个表中的书名都已编入索引

我将Book表的值添加到HTML表单select/option中,它正在被读取,但问题是当我尝试插入值时,它没有读取选项名称或值

HTML:

<select id="heard" class="form-control">
<option value="">Choose Book</option>
 <?php require_once '../mysql/bookssql.php';
  while($row = mysqli_fetch_array($data, MYSQLI_ASSOC)){ 
   echo '<option name="borrow_book" value="'.$row['Title'].'">' .$row['Title']. '</option>';
  }
 ?>
</select>
<?php $borrow_book = $_POST['borrow_book'];
 $upload = "INSERT INTO `borrowed_books` (`student_ID`, `Book Name`) VALUES ('23, '$borrow_book');";
?>

选书
PHP插入代码:

<select id="heard" class="form-control">
<option value="">Choose Book</option>
 <?php require_once '../mysql/bookssql.php';
  while($row = mysqli_fetch_array($data, MYSQLI_ASSOC)){ 
   echo '<option name="borrow_book" value="'.$row['Title'].'">' .$row['Title']. '</option>';
  }
 ?>
</select>
<?php $borrow_book = $_POST['borrow_book'];
 $upload = "INSERT INTO `borrowed_books` (`student_ID`, `Book Name`) VALUES ('23, '$borrow_book');";
?>

名称应位于
元素中,而不是
s中

<select id="heard" name="borrow_book" class="form-control">
<option value="">Choose Book</option>
 <?php require_once '../mysql/bookssql.php';
  while($row = mysqli_fetch_array($data, MYSQLI_ASSOC)){ 
   echo '<option value="'.$row['Title'].'">' .$row['Title']. '</option>';
  }
 ?>
</select>

选书
您在
$upload
中有一个输入错误,在
23
之前有一个额外的


您应该停止将变量直接替换到查询字符串中,并使用带参数的准备语句。请参见

外键应该是图书ID,而不是图书名称。
'23,
有一个额外的引号。