插入前检查是否存在

时间:2011-11-22 05:02:22

标签: php

我有一个脚本,在将新记录插入数据库之前检查记录是否存在:

if(mysql_num_rows(mysql_query("select post_url from vinanghinguyen_posts where post_url = '$final_url'")) < 1)
{
   //insert 
}

如果数据库中已有post_url,则不要插入。我检查数据库。我有一些post_url$final_url,但它仍然正常插入。为什么呢?

3 个答案:

答案 0 :(得分:2)

在if条件下使用“== 0”替换“< 0”。数据库中的总行数永远不会小于0,它必须是0或大于0.还有一件事永远不会使用 = 来检查操作符 {{1 }}

==

答案 1 :(得分:0)

只检查真假条件

if(mysql_num_rows(mysql_query("select post_url from vinanghinguyen_posts where post_url = '$final_url'")))
{
  //insert 
}

答案 2 :(得分:0)

更好的方法是通过adding a unique key在您的架构中强制post_url的唯一性。

CREATE UNIQUE INDEX vinanghinguyen_posts_unique_url
ON vinanghinguyen_posts( post_url )

现在,您可以让数据库通过告诉它忽略重复的条目来完成工作

//clean the data
$final_url = mysql_real_escape_string( $final_url );

mysql_query( "INSERT IGNORE INTO
              vinanghinguyen_posts
              VALUES
              ('$final_url')" );