Php 键'的重复输入;初级';在mysql代码中

Php 键'的重复输入;初级';在mysql代码中,php,mysql,sql,Php,Mysql,Sql,每当我想在数据库中插入一些东西时,我总是会遇到这个错误 我已经环顾了斯塔克,但答案太复杂了 错误是: 订单错误: 键“PRIMARY”的重复条目“936791155” $orderID = rand(); $orderQuery = "INSERT INTO Orders (OrderID, PersonID, ProductID, Quantity, Price, OrderDate) VALUES(".$orderID.",".$customerID.",".$productID.",".

每当我想在数据库中插入一些东西时,我总是会遇到这个错误 我已经环顾了斯塔克,但答案太复杂了

错误是: 订单错误: 键“PRIMARY”的重复条目“936791155”

$orderID = rand();
$orderQuery = "INSERT INTO Orders (OrderID, PersonID, ProductID, Quantity, Price, 
OrderDate)
VALUES(".$orderID.",".$customerID.",".$productID.",".$selectedQuantity.",".$totalPrice.",'".$today."'";

if(mysqli_query($conn, $sqlQuery)) 
{
    echo "Order has been Successfull!";
} else {
    echo "Order Error: ".$sql. "<br>" . mysqli_error($conn);
}
编辑。我认为$customerID有问题

$customerID = rand();
$sqlQuery = "INSERT INTO Customers (PersonID, FirstName, Address, Phone)
VALUES (".$customerID.",'".$userName."','".$address."','".$phone."')";
    if(mysqli_query($conn, $sqlQuery)) {
     echo "Member verified, in database";
} else{
    echo "Member Error: " . $sql . "<br>" . mysqli_error($conn);
}
$customerID=rand();
$sqlQuery=“插入客户(PersonID、名字、地址、电话)
值(“.$customerID.”、“$userName.”、“$address.”、“$phone.”);
if(mysqli_查询($conn,$sqlQuery)){
echo“成员已验证,在数据库中”;
}否则{
echo“成员错误:.$sql.
”.mysqli_错误($conn); }
OrderID
是一个自动递增列,您不必在insert语句中设置其值,而是使用此insert:

$orderQuery = "INSERT INTO Orders (PersonID, ProductID, Quantity, Price, 
OrderDate)
VALUES(".$customerID.",".$productID.",".$selectedQuantity.",".$totalPrice.",'".$today."')";
只要从insert中去掉
“$orderID.”,


我还建议您使用sql参数将值传递给查询,不要使用字符串连接。

OrderID
是一个自动递增列,您不必在insert语句中设置其值,而是使用此insert:

$orderQuery = "INSERT INTO Orders (PersonID, ProductID, Quantity, Price, 
OrderDate)
VALUES(".$customerID.",".$productID.",".$selectedQuantity.",".$totalPrice.",'".$today."')";
只要从insert中去掉
“$orderID.”,


我还建议您使用sql参数将值传递给查询,不要使用字符串连接。

我知道有一个答案,但让我告诉您如何使用准备好的语句,这使您的sql更加安全

$stmt = $conn -> prepare("INSERT INTO Orders (PersonID, ProductID, Quantity, Price, OrderDate) VALUES (?,?,?,?,?)");
$stmt -> bind_param("iiiss", $customerID, $productID, $selectedQuantity, $totalPrice, $today);

if($stmt -> execute()){
    echo "Order has been Successfull!";
}else {
    echo "Order Error: ".$sql. "<br>" . mysqli_error($conn);
}
$stmt=$conn->prepare(“插入订单(PersonID、ProductID、数量、价格、订单日期)值(?,,?,?)”;
$stmt->bind_参数(“iiss”、$customerID、$productID、$selectedQuantity、$totalPrice、$today);
如果($stmt->execute()){
echo“订单已成功!”;
}否则{
echo“订单错误:”.$sql.
“.mysqli_错误($conn); }
我知道这有一个答案,但让我来告诉您如何使用准备好的语句,这使您的SQL更加安全

$stmt = $conn -> prepare("INSERT INTO Orders (PersonID, ProductID, Quantity, Price, OrderDate) VALUES (?,?,?,?,?)");
$stmt -> bind_param("iiiss", $customerID, $productID, $selectedQuantity, $totalPrice, $today);

if($stmt -> execute()){
    echo "Order has been Successfull!";
}else {
    echo "Order Error: ".$sql. "<br>" . mysqli_error($conn);
}
$stmt=$conn->prepare(“插入订单(PersonID、ProductID、数量、价格、订单日期)值(?,,?,?)”;
$stmt->bind_参数(“iiss”、$customerID、$productID、$selectedQuantity、$totalPrice、$today);
如果($stmt->execute()){
echo“订单已成功!”;
}否则{
echo“订单错误:”.$sql.
“.mysqli_错误($conn); }

如果列类型为自动增量,则不需要插入或删除。我想您可以在insert查询中省略该字段。该值已经存在于主键的Order表中,请学习使用参数。不要使用参数值来填充查询字符串。尝试回答时是否截断了表并重置了所有自动ID?如果列类型为“自动增量”,则不需要插入OrdrID。我想您可以在insert查询中省略该字段。该值已经存在于主键的Order表中,请学习使用参数。不要咀嚼带有参数值的查询字符串。当您尝试回答时,是否截断了表并重置了所有自动ID?@NicholasWalters您是否遇到了相同的错误?或者发生了什么事???@NicholasWalters我看到您的查询字符串中缺少一个结束括号(在值的末尾(…
此处
)@NicholasWalters请显示您得到的完整错误,这很奇怪。顺序错误:键“PRIMARY”的重复条目“911115575”@NicholasWalters您可以尝试从mysql workbench或phpmy admin而不是从php向表中插入一条简单的sql insert语句吗values@NicholasWalters你有同样的错误吗?或者发生了什么事???@NicholasWalters我看到查询字符串中缺少一个结束括号(在值的末尾(…
此处
)@NicholasWalters请显示您得到的完整错误,这很奇怪。顺序错误:键“PRIMARY”的重复条目“911115575”@NicholasWalters您可以尝试从mysql workbench或phpmy admin而不是从php向表中插入一条简单的sql insert语句吗?测试值是固定的