检查SQL表中的数据是否已存在

时间:2013-12-03 16:46:39

标签: php sql linux database

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

我已经有了从用户输入将数据输入表中的代码,但我不确定如何检查重复项。例如,我想检查是否再次添加同名的产品。

这是我到目前为止所做的:

$sql = "INSERT INTO user_data (product_name, code, comments)
        VALUES ('$_POST[product_name]','$_POST[code]','$_POST[comments]')";

2 个答案:

答案 0 :(得分:0)

这是可怕的 SQL编码实践,并且如前所述,它容易受到SQL注入攻击的影响,但这些内容应该有效。

$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]') ";

答案 1 :(得分:0)

执行此操作的最佳方法是向表格本身添加唯一性约束。这样就可以防止添加重复记录。

在你的情况下,我会这样做:

ALTER TABLE `user_data` ADD UNIQUE (
`product_name`
)

此外,您可以在添加之前检查记录:

$sql="SELECT count(*) AS number FROM user_data WHERE product_name LIKE '".$_POST['product_name']."'";

如果列“数字”1(或更大),您知道它已经存在。此外,当您获得2或更大时,您将知道您已经有重复记录。