首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP不推荐:第154行中的adodb-mssqinative.inc.php建议自动将false转换为数组

问PHP不推荐:第154行中的adodb-mssqinative.inc.php建议自动将false转换为数组
EN

Stack Overflow用户
提问于 2022-02-08 14:09:51
回答 2查看 4.8K关注 0票数 6

我们正在将PHP升级到8.1版。使用。这一切似乎都是正确的,但我在日志文件中看到了重复的消息:

03-2022 11:51:18美国/纽约PHP取消推荐:在第154行的C:...\includes\adodb\drivers\adodb-mssqlnative.inc.php中不推荐自动将false转换为数组

我已经将adodb更新到版本5.22,但这并没有阻止混乱的日志记录。ini文件

代码语言:javascript
复制
extension=php_sqlsrv_81_nts_x64.dll
extension=php_pdo_sqlsrv_81_nts_x64.dll

有人知道如何解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2022-02-08 14:24:27

这是一个向后不兼容的已知问题,影响了ADOdb库5.22.1和更高版本。PHP8.1警告您对假-y值的自动生动化。和一些未来版本的PHP在执行时会抛出一个错误。

PHP本机允许自动生动化(从falsey值自动创建数组)。这个特性非常有用,并在许多PHP项目中使用,特别是在变量未定义的情况下。但是,有一点奇怪,允许从假值和空值创建数组。

他们举了个例子

代码语言:javascript
复制
// From false
$arr = false;
$arr[] = 2;

我去和找到了有问题的文件,这是它的函数

代码语言:javascript
复制
function ServerInfo() {
    global $ADODB_FETCH_MODE;
    static $arr = false;
    if (is_array($arr))
        return $arr;
    if ($this->fetchMode === false) {
        $savem = $ADODB_FETCH_MODE;
        $ADODB_FETCH_MODE = ADODB_FETCH_NUM;
    } elseif ($this->fetchMode >=0 && $this->fetchMode <=2) {
        $savem = $this->fetchMode;
    } else
        $savem = $this->SetFetchMode(ADODB_FETCH_NUM);

    $arrServerInfo = sqlsrv_server_info($this->_connectionID);
    $ADODB_FETCH_MODE = $savem;
    $arr['description'] = $arrServerInfo['SQLServerName'].' connected to '.$arrServerInfo['CurrentDatabase'];
    $arr['version'] = $arrServerInfo['SQLServerVersion'];//ADOConnection::_findvers($arr['description']);
    return $arr;
}

问题是它开始于

代码语言:javascript
复制
static $arr = false;

然后尝试自动绘制一个非数组(错误中的第154行)。

代码语言:javascript
复制
$arr['description'] = $arrServerInfo['SQLServerName'].' connected to '.$arrServerInfo['CurrentDatabase'];

您应该能够(理论上)通过确保它是一个数组来修复它(无论如何,他们都应该这样做)。将其添加到该行的上方,使其在试图追加之前使之成为一行。

代码语言:javascript
复制
if(!is_array($arr)) $arr = [];
票数 8
EN

Stack Overflow用户

发布于 2022-12-03 20:34:49

试着添加:

代码语言:javascript
复制
if(!is_array($yourarray)) $yourarray = [];

因为

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71035322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档