php使用odbc执行复杂函数遇到的问题,sql语句直接在sqlserver数据库中运行有结果,使用php总是为空

来源:互联网 发布:用文言文说网络流行语 编辑:程序博客网 时间:2024/05/18 13:25


排查问题1、$res = odbc_exec($this->conn,$sql);查看执行是否正确。使用 $errorcode=odbc_error($res); var_dump(odbc_errormsg());,均返回null

排查问题2、打印出的sql语句,与复制到sqlsever查询器中语句,发现sqlserver查询器会自动检查语法错误,如联合表查询,查询器将会自动将语句中使用的字段匹配上数据表名。

这就是为什么同样的语句在sqlserver查询器中可以执行,在php代码中不能执行的原因了。特此谨记,联合表查询一定要带上数据表名

排除问题3.在我将所有表名补充完整后,还是不能执行,最终发现,在我使用  while(odbc_fetch_row($res))之前,调试的时候将var_dump(odbc_fetch_row($res));进行了打印,结果就一直查询不出来,去掉调试的语句,执行结果正常。

 public function query($sql)   {      // $sql="select * from orgsignin where orgid=8100001";       if (!function_exists('odbc_fetch_array')) {           function odbc_fetch_array($result, $rownumber=null) {               $array = array();               if (!($cols = odbc_fetch_into($result, $result_array, $rownumber))) {                   return false;               }               for ($i = 1; $i <= $cols; $i++) {                   $array[odbc_field_name($result, $i)] = $result_array[$i - 1];               }               return $array;           }       }       else       {          // echo "fuc exit;";          // print_r($this);                $res = odbc_exec($this->conn,$sql);        //  var_dump($this->conn);          var_dump($res);           $errorcode=odbc_error($res);       //    var_dump($errorcode);        //   var_dump(odbc_errormsg());           $thisData = "";           $i = 0;           $j = 0;           $num_rows = 0;        //   var_dump(odbc_fetch_row($res));          //   var_dump(odbc_fetch_row($res));             while(odbc_fetch_row($res)) {                 $num_rows++;                 //Build tempory                 for ($j = 1; $j <= odbc_num_fields($res); $j++) {                     $field_name = odbc_field_name($res, $j);                     //  $this->temp_fieldnames[$j] = $field_name;                     $ar[$field_name] = odbc_result($res, $field_name) . "";                 }                 $thisData[$i] = $ar;                 $i++;             }         }    var_dump($thisData);       return $thisData;



0 0
原创粉丝点击