PHP找不到一些记录

时间:2019-03-31 19:58:06

标签: php sqlsrv

此处的新手有PHP / SQLSRV问题。我有一个生成SQL查询的PHP页面(下面的示例):

$conn = sqlsrv_connect($serverName, $connectionOptions);  
if($conn == false)  
  die( print_r(sqlsrv_errors(),true));

$tsql = "SELECT ROUTEID,QTY,ITEMID,INVENTTRANSREFID FROM WMSORDERTRANS WHERE ROUTEID LIKE '%" . $routeID . "%' ORDER BY ROUTEID";
$getRouteInfo = sqlsrv_query($conn,$tsql); 
if ($getRouteInfo) {
  $rows = sqlsrv_has_rows( $getRouteInfo );
  $counter = 0;
  if ($rows === true) {
    while ($row =sqlsrv_fetch_array($getRouteInfo,SQLSRV_FETCH_ASSOC)) {
      $counter++;
      echo $row['ROUTEID']."<BR>";
    }
    echo ("COUNT=" . $counter . "<BR><HR>");
  } else {
    echo "There are no rows. <br />";
  }
} else {
  echo ("Something failed in SQLSRV_QUERY<BR>");
}

在PHP中执行时,计数返回为603行。 如果我将完全相同的查询复制/粘贴到SQL Management Studio中,则会得到9562行。

我不知道为什么相同的查询会导致行数如此巨大的差异。 关于我应该寻找什么/在哪里寻找任何差异的任何建议?

我将查询更改为同时使用“ LIKE”通配符和显式ROUTEID目标。一些routeid的返回行,另一些在通过PHP查询时没有,但是在使用Management Studio时会显示相同的ROUTEID。

我还建立了Excel与数据库之间的连接。 excel查询与我在Management Studio中看到的内容匹配,因此我的PHP似乎异常。

我希望PHP查询返回的结果与Excel或Management Studio得到的结果相同,但不确定要得到变化的结果我缺少什么。

Web服务器:Windows Server 2016上的IIS SQL Server:SQL Server 2008 R2 的PHP:7.3.3 SQLSRV_DRV:5.6.1

1 个答案:

答案 0 :(得分:0)

原来,数据库中存在数据问题。重新复制了生产数据库以进行测试,现在Web服务器返回了PHP中的行数,以匹配Management Studio看到的内容。不知道管理工作室为什么看不到记录,而PHP查询却看不到,但是刷新数据库似乎已经清除了它。