我想在我的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表中。
就像hingu Devang和Bira提到的那样,将你的ID列设置为Auto_Increment并且不要在那里手动放置值,因为它会自动赋值。
至于您的查询正在执行两次的问题,请尝试删除该行:
$result=$conn->query($sql);
因为您已经有一个查询:
if($conn->query($sql)===TRUE)
当您添加任何字段作为主键时,表示它必须具有唯一记录,不允许重复。您试图在同一个表中添加重复(相同的记录)。 您应该在数据库中添加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]