我想在我的书表中插入一些值,并创建了一个内部带有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
现在,如果我按下添加按钮,则会显示此错误:
错误图片:
,但是值已经输入到SQL表中。
答案 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作为主键+自动增加”