此处的新手有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
答案 0 :(得分:0)
原来,数据库中存在数据问题。重新复制了生产数据库以进行测试,现在Web服务器返回了PHP中的行数,以匹配Management Studio看到的内容。不知道管理工作室为什么看不到记录,而PHP查询却看不到,但是刷新数据库似乎已经清除了它。