php mysql insert(当重复某事时,插入一个空值)

时间:2011-03-16 11:44:15

标签: php mysql

我想插入一些文章。我想先做一个判断,如果图像值已经在数据库中,则插入一个空值。 更多解释: 如果有这些数据:

title1,image1
title2,image2 //this is image2 first appear, so insert it 
title3,image2 //image2 has already in the database, so insert an empty value for just image field
title4
title5,image3  

最终数据插入到数据库中应该是这样的:

 title | image
title1,image1
title2,image2 
title3
title4
title5,image3 

这是我的代码,但它仍然将重复值插入数据库。所以有人可以帮助我吗?谢谢。

foreach{//first here has a foreach to make all the articles as a queue 
...   
if(!empty($image)){ //first judge if the insert article had a image value
$query1 = mysql_query("select * from articles where .image = '".$image."' ");
while ($row = mysql_fetch_array($query1)) {
$image1 = $row['image'];
}
}
if(!empty($image1)){ //make a query first if the image has already in the database
  mysql_query("INSERT INTO articles (title,image) SELECT '".$title."','' ");
}else{
  mysql_query("INSERT INTO articles (title,image) SELECT '".$title."','".$image."' ");;
}
}

2 个答案:

答案 0 :(得分:0)

您的第一个查询包含错误。您必须在“图像”之前删除点:

where **.**image 

答案 1 :(得分:0)

正如弗朗切斯科所说,dot可能是该查询的一个问题。

不清楚你在这里要做什么。但是如果你试图阻止相同的图像文件存储两次,那么你应该使用下面这样的东西:

function is_same_file( $image1, $image2 ){

    if( filesize($image1) != filesize($image2)
       return false;

    if( hash_file('md5', $image1) != hash_file('md5', $image2) )
       return false;

    return true;
}