【问题标题】:sqlsrv_fetch_array doesn't return correct rowssqlsrv_fetch_array 不返回正确的行
【发布时间】: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。没有记录时返回nullwhile 循环因错误而终止,但如果您在 $row === false 时继续调用 sqlsrv_fetch_array,您可以获得其他行。只是不是错误行。

标签: php sql-server sqlsrv


【解决方案1】:

sqlsrv_fetch_array() 中,当使用具有多个同名列的结果集时,不应使用 SQLSRV_FETCH_ASSOC 获取类型。 SQLSRV_FETCH_BOTH(默认值)。 检查此链接 https://www.php.net/manual/en/function.sqlsrv-fetch-array.php

【讨论】:

  • 我试过但结果相同。你有什么别的想法吗?
猜你喜欢
  • 2020-11-25
  • 2021-06-09
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多