表单数据被插入MySQL表但仍然服务器引发错误

问题描述 投票:1回答:2

我想在我的book表中插入一些值,然后在其中创建了一个带有HTML表单的PHP页面。问题是我的值被插入但它在网页上抛出了主键错误。代码如下。

<!DOCTYPE html>
<html>
  <head>
    <title>New Books</title>
  </head>
  <body>
    <?php
      if (isset($_POST['submit'])) {
        $server="localhost";
        $username="root";
        $password="";
        $db="library";

        $conn= new mysqli($server,$username,$password,$db);
        if ($conn->connect_error) {
          echo "Server Error Occured Please Try Again Later";
        }

        $bid=$_POST['bid'];
        $bname=$_POST['bname'];
        $baut=$_POST['baut'];
        $bc=$_POST['bc'];
        $blf=$_POST['blf'];
        $bs=$_POST['bs'];

        $sql="insert into books(BOOK_ID,BOOK_NAME,BOOK_AUTHOR,BOOK_CATEGORY,BOOK_LOST_FINE, BOOK_STATUS) values('$bid','$bname','$baut','$bc','$blf','$bs')";
        $result=$conn->query($sql);

        if ($conn->query($sql)===TRUE) {
          echo "New Book Added Successfully";
        }
        else{
          echo "Please Recheck The Values Entered" . $conn->error;
          $secondsWait = 5;
          header("Refresh:$secondsWait");
        }
      }
    ?>
    <div class="header">
      <a href="images/456.jpg" class="logo">Lowa State University</a>
      <div class="header-right">
        <a class="active" href="#">Main Page</a>
        <a href="contacts.html">Due Fines</a>
        <a href="aboutus.html">Contact Us</a>
        <a href="">Profile</a>
      </div>
    </div>
    <form action="" method="post">
      <input type="text" name="bid" placeholder="BOOK ID"><br><br>
      <input type="text" name="bname" placeholder="BOOK NAME"><br><br>
      <input type="text" name="baut" placeholder="BOOK AUTHOR"><br><br>
      <input type="text" name="bc" placeholder="BOOK CATEGORY"><br><br>
      <input type="number" name="blf" placeholder="BOOK LOST FINE"><br><br>
      <input type="text" name="bs" placeholder="BOOK STATUS"><br><br>
      <input type="submit" name="submit" value="Add Book"><br><br>
      <input type="reset" name="reset" value="Clear Fields">
    </form>
  </body>
</html>

示例值为enter image description here

现在,如果我按下添加按钮,则会显示以下错误:

错误图片:

enter image description here

但是这些值已经输入到SQL表中。

php html css mysql
2个回答
1
投票

就像hingu Devang和Bira提到的那样,将你的ID列设置为Auto_Increment并且不要在那里手动放置值,因为它会自动赋值。

至于您的查询正在执行两次的问题,请尝试删除该行:

$result=$conn->query($sql);

因为您已经有一个查询:

if($conn->query($sql)===TRUE)

0
投票

当您添加任何字段作为主键时,表示它必须具有唯一记录,不允许重复。您试图在同一个表中添加重复(相同的记录)。 您应该在数据库中添加BOOK_ID作为主键+自动增量,当您插入新记录时,您不需要手动添加BOOK_ID。我自动从之前的记录增加并自动添加。 就这样做

 $sql="insert into 
    books(BOOK_NAME,BOOK_AUTHOR,BOOK_CATEGORY,BOOK_LOST_FINE,
    BOOK_STATUS) values('$bname','$baut','$bc','$blf','$bs')";

注意[在表中添加BOOK_ID作为PRIMARY KEY + AUTO INCREMENT]

© www.soinside.com 2019 - 2024. All rights reserved.