SQL-服务器 Select 在 PHP 上返回空值

SQL-Server Select returning null on PHP

我在 MSSQL 运行 时有一个查询 returns 所有数据,但是当我尝试使用 php 代码获取结果时 returns null

SELECT:

   $query =  "SELECT  DISTINCT (E080SER.desser) as desser,
                E080SER.CODFAM codfam, e085cli.apecli apecli, 
                E085CLI.CODCLI codcli, E085CLI.NOMCLI nomeCli
                FROM
                E160CTR,
                E160CVS, e080ser,
                E085CLI,
                E070EMP,
                E070FIL
                WHERE
                e070emp.nomemp like '%Gestão tech%' and 
                e080ser.codser = e160cvs.codser and
                e080ser.codser like ('%manw%') and (E160CTR.CODEMP = 1)  and
                ((E160CTR.CODEMP = E070FIL.CODEMP) AND (E160CTR.CODFIL = 
                E070FIL.CODFIL) AND  
                (E160CTR.CODCLI = E085CLI.CODCLI) AND (E160CVS.CODEMP = 
                E160CTR.CODEMP) AND 
                (E160CVS.CODFIL = E160CTR.CODFIL) AND (E160CVS.NUMCTR = 
                E160CTR.NUMCTR)) AND
                (E160CTR.SITCTR = 'A') and e080ser.sitser = 'a' and 
                E080SER.CODEMP IN (1, 9)
                  order by e080ser.desser";

PHP 代码:

 $sql = sqlsrv_query($conn, $query);
 while($item = sqlsrv_fetch_array($sql)){
    var_dump($item);
}

while循环后面多了一个分号,即循环体为空。然后你尝试读取的结果在最后一行之后,这就是为什么你没有得到你期望的结果。

有时需要使用 sqlsrv_next_result() 获取所有结果集才能获取数据。你可以试试这个:

<?php
...
$sql = sqlsrv_query($conn, $query);
do {
   while($item = sqlsrv_fetch_array($sql)){
      var_dump($item);
   }
} while (sqlsrv_next_result($sql));
...

?>

我找到问题了

问题出在编码上,我把 $query 放在 utf8_encode() 里面,现在它正在返回结果。

谢谢大家的宝贵时间。