insert into product_species(type_id,type_name)SELECT $typeid,$typename FROM product_species where NOT EXISTS(SELECT * FROM product_species where product_species.type_id=$typeid LIMIT 1)现在问题是,当我product_species表中没有数据时,不能插入数据。当我有数据时就能正常插入。
呵呵...我刚学PHP,我以前玩开VB,sql,ASP,access 请那位大侠帮帮我,谢谢!

解决方案 »

  1.   

    http://hi.baidu.com/xinke0402/blog/item/58e8ac8b26b1b5719f2fb404.html
    表空的时候 有这种情况
      

  2.   

    不如用insert into .... on duplicate key ...
      

  3.   

    INSERT INTO product_species(type_id,type_name) 
    VALUES (101,102) ON DUPLICATE KEY UPDATE type_id=type_id+1;
    UPDATE product_species SET type_id=type_id+1 WHERE type_id=101
    我试了还是不行。能插入数据,但不会判断TYPE_id或TYPE_NAME是否已存在
     
    我想插入数据时选判断TYPE_id或TYPE_NAME是否已存在。
      

  4.   

    这么说type_id只是个计数字段,而非primary key?
    这个表有主键或者type_id是unique索引才能用on duplicate key
      

  5.   

     字段      类型    整理    属性           Null    默认    额外     操作
    ---------------------------------------------------------
    puid     int(6)                       否            auto_increment               
    type_id  int(6)                       是      NULL                
    type_name varchar(50) gbk_chinese_ci  是      NULL  
    ---------------------------------------------------------      
    以上是我product_species表的结构。
    我试了以下语句也不行。
      if ($_POST['action']=="add")
    {
       $typeid=$_POST['typeid'];
       $typename=$_POST['typename']; /*if(mysql_query("select type_id,type_name from product_species where (type_id='$typeid') or (type_name='$typename')") or die("操作失败!"))
       {
    echo"<script>alert('您添加的标识或类别名已经存在,请换一个再试试!');history.go(-1)</script>";
     }
    else
     {*/
    if(mysql_query("insert into product_species(type_id,type_name)values('$typeid','$typename')"))
    {
    echo "<script>alert('类别添加成功!');window.location='admin_product_species.php'</script>";
    }
    else
    {
    echo "<script>alert('类别添加失败!');history.go(-1)</script>" ;
    }
    // }
    }
      

  6.   

    本帖最后由 xuzuning 于 2011-08-03 10:09:59 编辑
      

  7.   

    $rs = if(mysql_query("select type_id,type_name from product_species where (type_id='$typeid') or (type_name='$typename')") or die("操作失败!");
    我刚调试,这句有问题。请大侠再帮改改....
      

  8.   

    $rs = mysql_query("select type_id,type_name from product_species where (type_id='$typeid') or (type_name='$typename')") or die("操作失败!");
      

  9.   


    嘿嘿,为空的时候不行,只要把空表变成不空就行了 :)改了一下,用的我的表名/字段,你自己改回去即可
    insert into k(title,weizhi)
    SELECT 'eee','222' 
    FROM ( select title,weizhi from k union select '---','000'  ) x
    where NOT EXISTS( SELECT * FROM k where title='eee' )
    limit 1
    ;
    我把limit放在了外面,因为放在里面会重复插入,应该不是你需要的,
    这里的 '---','000' 只要和你要插入的'eee','222'不同即可