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


Check that data in a SQL table already exists

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

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

这就是我目前所拥有的:

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

这是糟糕的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]') ";

实现这一点的最佳方法是向表本身添加唯一性约束。这样可以防止添加重复的记录。

在你的情况下,我会选择这个:

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

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

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

如果列"number"1(或更大),则表明它已经存在。此外,当你得到2,或更大,你会知道你已经有重复的记录。