PHP重复名称检查条目

时间:2012-03-19 14:52:32

标签: php mysql

我目前有一个html表单向我的数据库提交数据。用户使用它提交名称和URL,它将存储到我的表中。我想要实现的是当用户在文本字段中输入名称以及url字段中的url时,我想搜索我的数据库以查看是否已存在具有该名称的条目。如果是这样,我希望它不要将条目添加到数据库。

这是我目前设置的用于提交输入数据库的当前数据。

$title=$_POST['title'];
$url=$_POST['url'];
$query = "INSERT INTO images VALUES ('$title','$url')";
mysql_query($query) or die('Error, insert query failed');

我仍然是相当新的PHP,所以任何有关如何实现这一点的帮助将不胜感激!谢谢! :)

3 个答案:

答案 0 :(得分:4)

如果您将数据库中的标题设置为unique,则可以使用:

INSERT INTO images SET 
    title = '$title', 
    url = '$url' 
ON DUPLICATE KEY UPDATE 
    url = '$url'

这将插入一个新行,如果该特定标题已存在于数据库更新其URL中。

答案 1 :(得分:1)

最简单,最快捷的方法是将SQL更改为此(或执行相同工作的其他内容):

INSERT INTO images
     SELECT '$title',
            '$url'
       FROM DUAL
      WHERE NOT EXISTS
            (
              SELECT *
                FROM images
               WHERE title = '$title'
                 AND url = '$url'
            )

然后,您可以使用mysql_num_rowsmysql_insert_id或类似内容来确定是否插入了一行。

答案 2 :(得分:0)

快速/简单的解决方案是首先进行选择,然后如果没有返回记录,则进行插入。

**注意确保将所有输入转义到数据库以减少sql注入

根据您希望页面的负载,您可以转到另一条路径并创建一个存储过程,检查是否已有项目,然后在需要时插入。进入存储过程路由您只需拨打一个电话到您的数据库。