数据库中不需要的双重(重复)保存



这是问题:我有一些数据库,我正在从我的页面发送一些值。它们被发送并保存,但它们是重复的。我没有周期或条件发送两次。我有一个类似的代码,它工作得很好。

session_start();
$firstname = mysqli_real_escape_string($conn, $_POST['firstname']);
$lastname = mysqli_real_escape_string($conn, $_POST['lastname']);
$town = mysqli_real_escape_string($conn, $_POST['town']);
$street = mysqli_real_escape_string($conn, $_POST['street']);
$housenum = mysqli_real_escape_string($conn, $_POST['housenum']);
$psc = mysqli_real_escape_string($conn, $_POST['psc']);
$tel = mysqli_real_escape_string($conn, $_POST['tel']);
$email = mysqli_real_escape_string($conn, $_POST['email']); 
$payment = mysqli_real_escape_string($conn, $_POST['payment']);
$idBand = "";
$idBand = $_SESSION['idBand'][0];
for($i=1;$i<count($_SESSION['idBand']);$i++)
{
    $idBand = $idBand .", ". $_SESSION['idBand'][$i];
}
$sql = "INSERT INTO orders (idband, payment, firstname, lastname, town, 
                            street, housenum, psc, tel, email)
        VALUES ('$idBand', '$payment', '$firstname', '$lastname', '$town', 
                '$street', '$housenum', '$psc', '$tel', '$email')";
$result = mysqli_query($conn,$sql);
if ($conn->query($sql) === TRUE) 
{
    echo "Objednávka úspěšná.<br>";
    unset($_SESSION['idBand']);
    header("Location:../index.php?index.php=success");
    exit();
} 
    else 
    {
        echo "Error updating record: " . $conn->error;
        header("Location:../index.php?index.php=ERROR");
        exit();
    } 

从代码中删除以下行,因为您已经在使用 $conn->query($sql) 进行输入,因此只需注释下面显示的行即可。

$result = mysqli_query($conn,$sql);

我注意到的另一件事是,$idBand获取第一个元素,然后再次循环,它从一个元素开始,而不是您可以使用joinimplode,如下所示

$idBand = implode(",",$_SESSION['idBand']);

但这只是另一种方法,而不是主要问题是多次触发查询。

我希望此更改将解决您的问题

最新更新