При переборе набора результатов (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]=> строка (71) [Microsoft] [Драйвер ODBC 17 для SQL Server] Строковые данные, усечение справа [сообщение] => строка (71) [Microsoft] [Драйвер ODBC 17 для SQL Server] Строковые данные , усечение справа } }
$connection_info['CharacterSet'] = 'UTF-8'
(по умолчанию SQLSRV_ENC_CHAR) varchar против nvarchar и utf-8 против проблемы с кодировкой win1252 - person GDmac   schedule 12.01.2021