【发布时间】:2012-12-06 08:48:03
【问题描述】:
当我尝试从 PHP 连接到 MySQL 服务器时,我看到以下错误:
已弃用:mysql 扩展已弃用,将来将被删除:在第 123 行的 /path/to/filename.php 中使用 mysqli 或 PDO 代替
引用行上的代码是:
mysql_connect($server, $username, $password);
我确信这些论点是正确的,而且这个确切的代码已经运行多年没有问题。事实上,我是从一个资源丰富的 PHP 教程中获得它的。
为什么会这样?
我该如何解决?
-
我了解可以通过在
php.ini中设置error_reporting以排除E_DEPRECATED来抑制弃用错误:error_reporting = E_ALL ^ E_DEPRECATED如果我这样做会发生什么?
【问题讨论】:
-
这里有一个mysql转mysqli的源码扫描工具:Converting to MySQLi (Dec 2011; by Keith Larson; Oracle Mysql Wiki)
-
使用
pdo_query()。 mysql_最简单的升级路径,使用PDO;这是两种选择中更友好的。 MYSQLI 实际上只是一个权宜之计的 API;由于名称相似性,一开始对新手很有吸引力,但由于函数签名的变化需要更多的重写,然后甚至使参数化查询更加努力。 -
至于回答问题标题 - PDO 更笼统,generally 是更好的解决方案。 @DennisDegryse => 虽然我更喜欢面向对象的 PDO,但 MySQLi 也有一种面向对象的使用方式(搜索“mysqli 类”)。更多关于 PDO|MySQLi 在code.tutsplus.com/tutorials/… 和php.net/manual/en/mysqli.overview.php 上的比较
-
在 Oracle Mysql Wiki 上找不到任何东西(上面的网络链接评论)。
-
@hakre 感谢您提供该工具的链接。作为一般性评论,请注意您不能简单地将 mysql_ 转换为 mysqli_ 对于某些命令,因为它们的功能不同。
标签: mysql deprecated php