插入前检查重复项

2022-01-10 00:00:00 duplicates php mysql

在插入数据库之前,我使用以下代码检查重复项.对我来说,只有当 namedescriptionpricecity 时,重复才被视为重复>enddate 匹配.

Before inserting into the database, I'm using the following code to check for duplicates. To me, a duplicate is only considered a duplicate when name, description, price, city, and enddate match.

foreach($states_to_add as $item) {
    $dupesql = "SELECT 
                    COUNT(*) 
                FROM 
                    table 
                WHERE 
                    (   
                        name = '$name' 
                        AND description = '$description' 
                        AND manufacturer = '$manufacturer' 
                        AND city ='$city' 
                        AND price = '$price' 
                        AND enddate = '$end_date'
                    )";

    $duperaw = mysql_query($dupesql);

    if($duperaw > 0) {
        echo nl2br("$name already exists in $city 
");
    } 
    else {
        $sql = "INSERT INTO table (..... (here go the values to be inserted)
        ....

每个值都是在运行此检查之前定义的,我的结果总是在项目已经存在时返回.我转储了dupesql"并将命令复制/粘贴到 phpmyadmin 中,返回计数为 0.

Each value is defined prior to running through this checking, my result always comes back as item already exists. I dumped "dupesql" and copy/pasted the command into phpmyadmin which comes back with count 0.

推荐答案

您想要执行以下操作:

$dupesql = "SELECT * FROM table where (name = '$name' AND description = '$description' AND manufacturer = '$manufacturer' AND city ='$city' AND price = '$price' AND enddate = '$end_date')";

$duperaw = mysql_query($dupesql);

if (mysql_num_rows($duperaw) > 0) {
  //your code ...
}

查看这里了解更多信息.

相关文章