【问题标题】:sqlsrv_fetch_array does not return index when column value is null (PHP 7.4)当列值为空时,sqlsrv_fetch_array 不返回索引(PHP 7.4)
【发布时间】:2021-10-31 06:50:47
【问题描述】:

我正在努力将我的所有应用程序更新到 PHP 7.4

我已阅读其他线程,指出 7.4 中的数组索引比以前的版本更严格,并且不再允许引用未设置的索引。很好,我明白了原因,但问题是如果我执行 sql 查询并且某些行的列为空,我会收到错误消息“消息:尝试访问类型为 null 的值的数组偏移量”。

例子

col1 col2
'val' null

如果我执行以下查询

select col1, col2 from table

sqlsrv_fetch_array 将返回 [col1: 'val'] 并且 col2 将是一个空偏移量。

我知道我可以说

$row['col1'] = $row['col1'] ?? 0;
$row['col2'] = $row['col2'] ?? 0;

但如果我选择了很多列,这会添加很多代码行以确保一切都设置好了。

有没有办法强制 sqlsrv_fetch_array 仍然返回一个包含所有索引的数组?

【问题讨论】:

    标签: php indexing sqlsrv php-7.4


    【解决方案1】:

    尝试将SQLSRV_FETCH_ASSOC 传递给sqlsrv_fetch_array。这应该返回一个关联数组,其中将表示空列,但将包含空值。

    例如:

    while($row = sqlsrv_fetch_array($results,SQLSRV_FETCH_ASSOC)){
      foreach($row as $key=>$value){
        echo $key . " = " . $value . "\n";
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 2021-10-20
      • 2014-09-21
      • 2021-06-05
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多