这里有一个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查询但在使用管理工作室时显示相同的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
事实证明,数据库中存在数据问题。是否重新生成了生产数据库以进行测试,现在Web服务器返回PHP中的行数以匹配管理工作室看到的行数。不知道为什么管理工作室可以看到记录和PHP查询不能,但刷新数据库似乎已经清除它。