for($i=0;$i<$num;$i++){

   $sql = "SELECT * from .......";
   $query = mssql_query($sql);
   $arr = mssql_fetch_row($query);
 
           $sql1 = " INSERT INTO .... VALUES (..........)";
   $query1 = mysql_query($sql1);

}
我把sql语句写在上面,我主要是从第一条sql那里取出数据,然后存入到第二条sql那里去,只是这个过程是从mssql里面拿数据,插入到mysql里面的,我想问一下为什么我每次选择三条(包括三条)以上都会报错呢,报错说mssql_query那里有问题,求高手解答。

解决方案 »

  1.   

    value里面的值是$arr里面的数据,谢谢
      

  2.   

    $sql = "SELECT BU, J_NO, V_NUM, J_TYPE
      , (SELECT TOP 1 J_SRCE FROM A_SALFLDG a WITH (NOLOCK) WHERE a.J_NO=tra.J_NO ORDER BY J_LINE) as J_SRCE
      , POSTER_ID, CONVERT(varchar(10), POSTING_DATETIME, 120) as POSTING_DATE
      , PERIOD, SUM(CASE WHEN D_C='D' THEN ABS(AMOUNT) ELSE 0 END) as AMOUNT_D
      , SUM(CASE WHEN D_C='C' THEN ABS(AMOUNT) ELSE 0 END) as AMOUNT_C
      FROM CFL_A_SALFLDG tra WITH (NOLOCK)
      WHERE J_NO in (SELECT J_NO FROM A_SALFLDG cri WITH (NOLOCK) 
      WHERE AMOUNT!=0 and tra.J_NO= '$arr[$i]')
      GROUP BY J_NO, V_NUM, J_TYPE
      , POSTER_ID, CONVERT(varchar(10), POSTING_DATETIME, 120), PERIOD";
    //echo $sql."<br><br>";
    $query = mssql_query($sql);
    $arr = mssql_fetch_row($query);
    $sql1 = " INSERT INTO `pl_journal` (`BU`, `J_NO`, `V_NUM`, `J_TYPE`, `J_SRCE`, `POSTER_ID`, `POSTING_DATE`, `PERIOD`, `AMOUNT_D`, `AMOUNT_C`, `STATUS`, `USERNAME`)
      VALUES ('$arr[0]', '$arr[1]', '$arr[2]', '$arr[3]', '$arr[4]', '$arr[5]', '$arr[6]', '$arr[7]', '$arr[8]', '$arr[9]', '$', '$sUserName')";
    echo $sql1."<br>";
    $query1 = mysql_query($sql1);
    我说的选择三个,是我做这个之前已经把一张表的数据取出来的了,而且每个数据前面有一个checkbox,当我选中三个数据然后传到这里执行的时候就会报错,两条以内就不会。
    Warning: mssql_query() [function.mssql-query]: message: Conversion failed when converting the varchar value 'IS-2012001-0024' to data type int. (severity 16) in /opt/coolstack/apache2/htdocs/invoicelog/pl..journal.php on line 39前两条传过来的sql语句是完整的,所以没报错,就第三条里面的value值空了,就报错了,
      

  3.   

    echo $sql1."<br>";  //为什么不贴出结果。
      

  4.   

    INSERT INTO `pl_journal` (`BU`, `J_NO`, `V_NUM`, `J_TYPE`, `J_SRCE`, `POSTER_ID`, `POSTING_DATE`, `PERIOD`, `AMOUNT_D`, `AMOUNT_C`, `STATUS`, `USERNAME`) VALUES ('', '', '', '', '', '', '', '', '', '', 'Mark', 'finance')前两条是没错的,就不知道为什么第三条的value里面的值空了。
      

  5.   

    看你的SQL语句 ,又联合查询又分组又锁的,肯定比我厉害!~~~不过从结果上看估计有2中可能1】你sql里从数据库中取出来的数据就只有2条有效,你不妨打印出来看看,print_r($arr)
    2】你的报错信息里,Conversion failed when converting the varchar value 'IS-2012001-0024' to data type int.就是讲字符串转化为整形变量没有成功,你看看是不是哪个字段或者哪个函数使用的有问题,在查查。
      

  6.   

    我选择三个的时候是Array ( [0] => 44 [1] => 45 [2] => 46 ) 打印出来是这样哦。有三个参数,条件参数是可以传过来的,多少条都可以,然后我分别根据这三个参数在mssql数据库里面拿出数据来插入到mysql的表里面,为什么第三条就错了呢,第三条开始参数到不了sql语句,所以value值就没了,不知道为什么呢
      

  7.   

    我选择三个的时候是Array ( [0] => 44 [1] => 45 [2] => 46 ) 打印出来是这样哦。有三个参数,条件参数是可以传过来的,多少条都可以,然后我分别根据这三个参数在mssql数据库里面拿出数据来插入到mysql的表里面,为什么第三条就错了呢,第三条开始参数到不了sql语句,所以value值就没了,不知道为什么呢
      

  8.   

    主要就是第三个参数开始,那个select语句的where条件里的tra.J_NO= '$arr[$i]'进不去这条语句里,但是参数是传到这个页面了啊
      

  9.   

    打印数组和插入sql语句的参数肯定不一样...