Новичок здесь с проблемой PHP/SQLSRV. У меня есть страница PHP, которая генерирует запрос SQL (пример ниже):
$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, но не уверен, чего мне не хватает, чтобы получить разнообразный результат.
Веб-сервер: IIS на Windows Server 2016 SQL-сервер: SQL-сервер 2008 R2 PHP: 7.3.3 SQLSRV_DRV: 5.6.1






Выяснилось, что проблема с данными в БД. Сделал повторную копию рабочей базы данных для тестирования, и теперь веб-сервер возвращает количество строк в PHP, чтобы соответствовать тому, что видит студия управления. Не знаю, почему студия управления могла видеть записи, а PHP-запрос не мог, но обновление базы данных, похоже, прояснило это.
Обновите PHP до 7.3.3 и MS SQLSRV_DRV до 5.6.1 с тем же результатом в подсчете строк запроса.