升级到 php7 后,从 php DB 连接到 mysql 返回 DB 错误:未找到扩展

升级到 php7 后,从 php DB 连接到 mysql 返回 DB 错误:未找到扩展

从 ubuntu 14.03 升级到 16.04 后。我无法从 php DB 连接到 mysql。以下代码返回

<?php
    include_once('DB.php');    
    $conninfo = "mysql://xxxx:ppppp@localhost/ddddd";
    $db = DB::connect($conninfo);        
    if (DB::isError($db)) {
        print $db->getMessage();
        exit;
    } else {
        $result = $db->query("SELECT distinct did from selections where cid=6 order by did DESC;");
        while ($result->fetchInto($row, DB_FETCHMODE_ASSOC)) {
            extract($row);
            print "$did\n";
        }
        $result->free();
    }
    $db->disconnect();
?>

DB 错误:未找到扩展。

请注意,从终端打开的 mysql 中,我看到了表的“did”列的内容。

根据 oerdnj 在类似帖子中的建议,我确认

  1. php7.0-mysql 包已安装
  2. mysqli 出现在 phpinfo 中。以下是 phpinfo | grep mysqli 的结果
  3. 下面列出的是 ldd 命令的输出

php -r 'phpinfo();' | grep -i mysqli /etc/php/7.0/cli/conf.d/20-mysqli.ini, mysqli MysqlI 支持 => 已启用 mysqli.allow_local_infile => 开 => 开 mysqli.allow_persistent => 开 => 开 mysqli.default_host => 无值 => 无值 mysqli.default_port => 3306 => 3306 mysqli.default_pw => 无值 => 无值 mysqli.default_socket => 无值 => 无值 mysqli.default_user => 无值 => 无值 mysqli.max_links => 无限制 => 无限制 mysqli.max_persistent => 无限制 => 无限制 mysqli.reconnect => 关闭 => 关闭 mysqli.rollback_on_cached_plink => 关闭 => 关闭 API 扩展 => mysqli,pdo_mysql

ldd /usr/lib/php/*/mysqli.so linux-vdso.so.1 => (0x00007ffc807a9000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6cde88a000) /lib64/ld-linux-x86-64.so.2 (0x000055a1af509000)

请帮忙。

答案1

PHP 提供了多个与 MySQL 交互的接口。其中一个接口包含 等函数mysql_connect()mysql_query()多年来一直被标记为弃用(意思是“这已经过时了,不要再使用了”)。随着 PHP 7 的发布,这些旧函数终于从 PHP 中移除。

您的数据库层似乎正在使用这些过时且现已删除的函数。您应该用 PHP 提供的较新的 MySQL 接口之一(如mysqli或 )替换它们pdo

答案2

我改成$conninfo = "mysql://xxxx:ppppp@localhost/ddddd";$conninfo = "mysqli://xxxx:ppppp@localhost/ddddd";,现在可以正常工作了。我不明白为什么 mysql 在 php5 中可以工作,但在 php7 中却不行

相关内容