【问题标题】:Form Data Gets Inserted Into MySQL Table But Still Server Throws Error表单数据被插入 MySQL 表,但服务器仍然抛出错误
【发布时间】:2019-08-15 06:55:10
【问题描述】:

我想在我的 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>

表格中的样本值

现在如果我按下添加按钮,就会出现这个错误:

错误图片:

但值已输入到 SQL 表中。

【问题讨论】:

    标签: php html css mysql


    【解决方案1】:

    当您添加任何字段作为主键时,这意味着它必须具有唯一记录,不允许重复。您试图在同一个表中添加重复(相同的记录)。

    您应该在数据库中将 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')";
    

    并删除以下行$result=$conn-&gt;query($sql);

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

    【讨论】:

    • 是的,我现在已经创建了这样的表,但我的查询仍然被执行了两次。这开始发生在我将 ISSET 函数添加到我的代码以在我按下提交按钮后执行 sql 查询之后。
    【解决方案2】:

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

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

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

    因为你已经有一个查询是:

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

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 2017-10-13
      • 2017-04-23
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      相关资源
      最近更新 更多