我的环境是PHP+MYSQL。现在我向表里批量插入数据。INSERT INTO articles (title,article,date,image)SELECT "'.$title.'","'.$article.'","'.$date.'","'.$image.'"如何做到以下这种效果。如有以下这些数据,title1,article1,date1,image1
title2,article2,date2,image2 
title3,article3,date3,image2 
title4,article4,date4,image2 
title5,article5,date5,image3 插入数据库: title1,article1,date1,image1
title2,article2,date2,image2 
title3,article3,date3,         //这里的image2, 数据库里已经有了,此时插入空值。
title4,article4,date4,          
title5,article5,date5,image3 谢谢

解决方案 »

  1.   

    第1个字段都要这样处理还是只有image字段?
      

  2.   

    你这个语句只是插入一条记录啊。
    INSERT INTO articles (title,article,date,image)SELECT "'.$title.'","'.$article.'","'.$date.'","'.$image.'"这样的话,你可以在PHP中先检查一下$image是否已经存在,如果存在则置空即可。
      

  3.   

    怎样用代码判别$image是否已重复时,插入$image的值为空呢?
    我只会下面的代码,要么$image已存在,整条信息都不插入。
    FROM dual WHERE not exists (SELECT image FROM articles WHERE articles.image = '".$image."') 而我现在想要,如果$image已存在,"'.$title.'","'.$article.'","'.$date.'"还是继续插入数据库,而$image项忽略,插入一个空值。
    谢谢。
      

  4.   


    在你的PHP代码中先执行 select * from xxx where .image = '".$image."
    如果有记录返回则
    INSERT INTO articles (title,article,date)SELECT "'.$title.'","'.$article.'","'.$date.'"
    没有记录返回则按你原来的语句。
      

  5.   

    $query1 = mysql_query("select * from xxx where .image = '".$image."' ")
    while ($row = mysql_fetch_array($query1)) {
    $image1 = $row['image'];
    }
    if(!empty($image1){ 
        //INSERT INTO原句
    }else{
        //INSERT INTO $image = '';
    }老大,是不是这样的代码可以呢?
      

  6.   

    空值 要么是null 要么是‘’
      

  7.   

    $query1 = mysql_query("select count(*) as count from xxx where image = '".$image."' ")
    $row = mysql_fetch_array($query1)if(isset($row['count']) && $row['count'] > 0) {  // 如果只是image为空
      INSERT INTO articles (title,article,date,image)SELECT "'.$title.'","'.$article.'","'.$date.'",""  // 如果是整条数据都不要,就什么都不干好了} else {
      //INSERT INTO原句
    }如果你想优化的话,完全可以把是否有图片信息放到数组中,先到数组中看,数组没有image的项时,在去查库