【发布时间】:2021-04-01 14:04:28
【问题描述】:
我正在尝试使用 PHP 从远程 MS SQL Server 中 SELECT 一些产品。
sqlsrv_num_rows() 返回正确数量的记录,但 sqlsrv_fetch_array() 在某些情况下会返回 1 或 2 条记录,并且在大多数情况下不返回任何内容。
这是我的代码:
ini_set('max_execution_time', 1800);
ini_set('display_errors', 1);
header("Content-type: text/html; charset=utf-8");
error_reporting(E_ERROR | E_WARNING | E_PARSE);
$server = "servername";
$connectionInfo = array( "Database"=>"dbname", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $server, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
$sql = "SELECT items.mtrl, items.code, items.code2 model, items.name name1 from mtrl as items LEFT OUTER JOIN mtrextra as extra on extra.mtrl=items.mtrl WHERE extra.utbl01=342 AND extra.bool01=1 AND items.sodtype=51 ORDER BY items.mtrl";
$params = array();
$options = array( "Scrollable" => 'static');
$result = sqlsrv_query( $conn, $sql , $params, $options );
$rowCount = sqlsrv_num_rows($result);
while( $row = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)) {
echo $row['code']." | ".$row['name1']."<br/>";
}
echo "<p>".$rowCount."</p>";
echo print_r(sqlsrv_errors(), true);
这是页面网址:https://www.eleftherohori.gr/test/sqlsrv.php
我也有来自这个脚本的错误消息echo print_r(sqlsrv_errors(), true);
数组 ( [0] => 数组 ( [0] => 01004 [SQLSTATE] => 01004 1 => 0 [code] => 0 [2] => [Microsoft][ODBC Driver 13 for SQL Server]String 数据,右截断 [消息] => [Microsoft][ODBC Driver 13 for SQL Server]字符串数据,右截断))
谁能帮我解决这个问题? 谢谢。
【问题讨论】:
-
类似的Q&A。
-
sqlsrv_fetch_array由于错误而返回false。没有记录时返回null。while循环因错误而终止,但如果您在$row === false时继续调用sqlsrv_fetch_array,您可以获得其他行。只是不是错误行。
标签: php sql-server sqlsrv