PHP sqlsrv_fetch_array просматривает только половину результатов - PullRequest
0 голосов
/ 05 сентября 2018

При циклическом просмотре набора результатов (60 строк) PHP выполняет циклический просмотр только нескольких результатов. Если я не сортирую результаты, он возвращает четыре. Если я сортирую результаты по их идентификатору, он возвращает 31 результат. Я полагаю, что это может быть связано с размером данных в каждой строке, но я не уверен. Представление, из которого я выбираю, содержит 50 столбцов, около четверти которых представляют собой HTML-код, и я считаю, что они имеют тип данных varchar (max). Я использую следующие спецификации и код.
Microsoft SQL SERVER 2008
PHP 7,2
ODBC 17
Время выполнения PHP составляет 900 секунд
Ограничение памяти PHP составляет 4096 МБ

$connection_info = array();
$connection_info["Database"] = "database";
$connection_info["UID"] = "username";
$connection_info["PWD"] = "password"
$connection = sqlsrv_connect( "server", $connection_info );
result = sqlsrv_query( $connection, "SELECT * FROM server.[database].[dbo].[table]", array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ) );

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ) {
    echo $row["id"] . " " . var_dump( sqlsrv_errors() ) . "<br>";
    }
echo var_dump( sqlsrv_errors() );

Последняя проверка sqlsrv_errors () возвращает ошибку

array(1) { [0]=> array(6) { [0]=> string(5) "01004" ["SQLSTATE"]=> string(5) "01004" [1]=> int(0) ["code"]=> int(0) [2]=> string(71) "[Microsoft][ODBC Driver 17 for SQL Server]String data, right truncation" ["message"]=> string(71) "[Microsoft][ODBC Driver 17 for SQL Server]String data, right truncation" } }
...