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

标签 php sql linux database

我想记录用户在 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
    }

关于php - 防止通过 PHP 表单将重复项添加到数据库表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20379187/

相关文章:

php - 建议 : MySQL Database, 使用串联数据作为单行或创建多行

php - fatal error :调用未定义的方法 mysqli_stmt::get_result()

php - 如何使用 OptionTree 拥有多个 "Theme Options"页面?

c# - SQL依赖使用存储过程

php - 使用两个或多个表的 SQL 查询

linux - linux下的16位链接

c - 使用交叉编译器运行 Makefile 时出错

PHPunit - 测试自定义错误处理类

php - 如何在PHP5.5上安装V8js?

linux - 如何通过 ssh 登录到 Ubuntu 并自动执行 sudo su?