try:
"update tablename set name={$name},value=if(value!='',value,{$value}) where id={$id}"

解决方案 »

  1.   

    $value==""?sql=update tablename set name='$name' where id='$id':sql=update tablename set name='$name', value='$value' where id='$id'; 疯了,你要让MySQL控制value的空与否?就是数据库支持自定义函数,也达不到你的要求!!!一条SQl??
      

  2.   

    foolbirdflyfirst(湖水清澈)你确定一定能行?不会造成语法错误(我说的是$value为空的时候)……我想到一个办法,就是这样写:sql="update tablename set name='$name'";
    if ($value!="") sql.=", value='$value'";
    sql.=" where id='$id'"; 好像这样就OK?算得上是一条了吧?
      

  3.   

    这分明是PHP……弄个存储过程吧
      

  4.   

    $sql="update tablename set name={$name} ";
    if($value!=''){
    $sql.=" value='$value' where value!='' "
    }else{
    $sql.=" where ";
    }
    $sql.=" id={$id}"
      

  5.   

    lz可以自己实践一下,当然需求必须明确你确定一定能行?不会造成语法错误(我说的是$value为空的时候)……
    ====================================
    :),说的是。
    "update tablename set name={$name},value=if(value!='',value,'{$value}') where id={$id}"
      

  6.   

    $sql="update tablename set name={$name} ";
    if($value!=''){
    $sql.=" value='$value' where value='' "
    }else{
    $sql.=" where ";
    }
    $sql.=" id={$id}";这样试试,上面那个有点问题
      

  7.   

    PHP好像不用拼SQL吧,&变量写在字符串里面可以被直接解析...
      

  8.   

     学习支持 foolbirdflyfirst(湖水清澈) 高手啊===============================
    http://dev.mysql.com/doc/refman/4.1/en/control-flow-functions.htmlhttp://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.htmlmysql> SELECT IF(1>2,2,3);
            -> 3
    mysql> SELECT IF(1<2,'yes','no');
            -> 'yes'
    mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
            -> 'no'
      

  9.   

    经验证,湖水清辙提供的方法可行.结帖,已给分.update tablename set name={$name},value=if(value!='',value,'{$value}') where id={$id}另外我还找到另一个方法,一并帖出.
    update tablename set name='$name', value=CASE WHEN value IS NULL THEN '$value' ELSE value END where id='$id';