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

时间:2018-01-10 11:15:30

标签: php mysql mysqli

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

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();
    } 

1 个答案:

答案 0 :(得分:1)

从代码中删除以下行,因为您已使用$conn->query($sql)创建条目,因此请注释下面显示的该行。

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

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

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

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

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