防止通过PHP表单将重复项添加到数据库表中


Prevent duplicates being added to database table via PHP form

我想记录用户在PHP表单中输入的内容,并确保他们没有输入数据库表中已经存在的数据。

我已经有了将用户输入的数据输入到表中的代码,但我不知道如何检查重复数据。例如,我想检查是否没有再次添加相同名称的产品。

$sql = "
    INSERT INTO user_date 
    SELECT 
        product_name = '$_POST[product_name]'
        ,code = '$_POST[code]'
        ,comments = '$_POST[comments]'
    WHERE 
        NOT EXISTS(SELECT * FROM user_data WHERE product_name = '$_POST[product_name]') ";

但我得到了一个错误:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 'fdgfdg' code = 'fdgdfg' WHERE NOT EXISTS(SELECT *' at line 4

我知道安全问题。这不是一个实时系统,只是从中学习。

如果您不想有重复的插入,那么在插入语句的末尾使用IGNORE

 $sql = "
    INSERT INTO user_date 
    values
        ('$_POST[product_name]'
        ,'$_POST[code]'
        ,'$_POST[comments]')
   ON DUPLICATE KEY IGNORE";

所以这种方式可能会帮助你

 $result = mysql_query("SELECT * FROM user_data WHERE product_name = '$_POST[product_name]'");
    $num_rows = mysql_num_rows($result);
    if ($num_rows > 0) {
      // do something
    }
    else {
      // do something else
    }