Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何防止重复数据_Php_Mysqli_Duplicates - Fatal编程技术网

Php 如何防止重复数据

Php 如何防止重复数据,php,mysqli,duplicates,Php,Mysqli,Duplicates,我试图在数据库中插入来自多个表和 我想防止数据重复,它可以工作,但是 当插入新数据时,它不起作用,它仍然插入新数据,除非以前的所有数据都存在。我怎样才能防止它重复 我曾尝试在重复键上插入,但是否可以从多个表中获取值。怎么做 这是我的密码。tmno是用户id <?php session_start(); include ('configure.php'); if(isset($_POST['submit'])){ $tmno = $_SESSION['tmno']; $fname = $

我试图在数据库中插入来自多个表和 我想防止数据重复,它可以工作,但是

当插入新数据时,它不起作用,它仍然插入新数据,除非以前的所有数据都存在。我怎样才能防止它重复

我曾尝试在重复键上插入,但是否可以从多个表中获取值。怎么做

这是我的密码。tmno是用户id

<?php
session_start();
include ('configure.php');

if(isset($_POST['submit'])){

$tmno = $_SESSION['tmno'];
$fname = $_SESSION['fname'];
$date = $_SESSION['date'];
$month = $_SESSION['month'];
$paymentID = $_SESSION['paymentID'] ;
$cartID = $_SESSION['cartID'];
$statusName = $_SESSION['statusName'];
$feeID = $_SESSION['feeID'];

$check = mysqli_query($con,"SELECT * FROM invoice WHERE paymentID='$paymentID' AND feeID='$feeID'");
$checkrows = mysqli_num_rows($check);
if($checkrows){
echo "<script>alert('Already Update!');
            window.location='AdminFee.php'</script>";
}
else{ 

$yo = "INSERT IGNORE INTO invoice (paymentID,cartID,date,feeID,month,tmno,statusName)
       SELECT payment.paymentID, cart.cartID,payment.date,fee.feeID,fee.month,cart.tmno,payment.statusName
       FROM payment
       inner join cartitem on payment.cartID = cartitem.cartID
       inner join fee on cartitem.feeID = fee.feeID
       inner join cart on payment.cartID = cart.cartID";

$keputusan = mysqli_query($con,$yo);

    if($keputusan){

    echo "<script>alert('Invoice Updated!');
            window.location='AdminFee.php'</script>";
    }
    else{
    echo "<script>alert('Failed to Update Invoice!');
            window.location='AdminFee.php'</script>";
    }

}
}
?>

插入之前,需要使用主键并检查该值是否存在,以避免重复。当然,您可以从多个表中获取数据。您已经在使用join。除非您正在为学校学习或有特定的要求,否则有许多很好的查询生成器可以使您的交互更加容易,例如雄辩。您还可以使用PHP框架,如幼虫和CodeIgnitery,您可以在列上定义一个多列唯一约束,该约束必须是唯一的。看起来这可能会有很多列,我不知道是哪一列,你比我更了解你的数据库。添加唯一约束真的很好。谢谢