$sql = "insert b (col1,col2,coln,col9)values ('".$row[1]."','".$row[2]."','".$row[n]."','".$row[4]."');"

解决方案 »

  1.   

    $sql = "insert b (col1,col2,coln,col9)values ('$row[1]','$row[2]','$row[n]','$row[4]');"
      

  2.   

    并且原来是NULL值,到了b表,其值变为0。不是本意!
      

  3.   

    lvlfforever(那一年)
    并且原来是NULL值,到了b表,其值变为0。不是本意!--- 那就是你a表中取出来的0,否则null的插入b表也会是null
      

  4.   

    我得mysql是4.0.8的。取出来的是NULL,加引号插入b表,确实成了0。
      

  5.   

    问题基本解决:
    分两批插入。第一次条件为 where coln is not null
    第二次 条件为 where coln is null,插入时不理会 coln字段,其默认值就是NULL了。不知是否还有其他高明方法?可以近一步讨论。谢谢各位。^_^
      

  6.   

    拼个字符串有什么好讨论的ConvertNULL($str)
    {
        if(is_null($str)) return "NULL";
        if(is_int($str) || is_float($str) || is_double($str)) return $str;
        return "'$str'";
    }$row = array_map('ConvertNULL', $row);
    $sql = "insert b (col1,col2,coln,col9)values ($row[1],$row[2],$row[n],$row[4]);"