表单数据被插入到MySQL表中,但是服务器仍然抛出错误

时间:2019-03-25 03:30:31

标签: php html css mysql

我想在我的书表中插入一些值,并创建了一个内部带有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>

表格中的样品值 http://pycurl.io/docs/latest/unicode.html

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

错误图片:

enter image description here

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

2 个答案:

答案 0 :(得分:1)

就像提到的hingu Devang和Bira一样,将您的ID列设置为Auto_Increment,并且不要在其中手动放置值,因为它会自动分配值。

关于您的查询被执行两次的问题,请尝试删除该行:

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

因为您已经有一个查询,

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

答案 1 :(得分: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作为主键+自动增加”