安装mysqlnd会破坏使用mysql的PHP中的现有代码吗?

时间:2013-08-21 08:00:31

标签: php mysql mysqlnd

我正在将我的代码从使用PHP中的mysql移动到mysqli。为了使mysqli get_result()函数起作用,我需要将mysqlnd安装为said here on SO。这涉及删除现有的php-mysql扩展,现在我只想确定(那些做过这个的人),一旦我删除了mysql:

yum remove php-mysql

并安装mysqlnd:

yum install php-mysqlnd

使用mysql的其他代码(有很多现有的代码库)仍然有效吗?

我的PHP版本是5.3.27

3 个答案:

答案 0 :(得分:7)

php-mysqlphp-mysqlnd同时包含mysqlmysqliPDO个驱动程序。如果您只需要mysqli驱动程序,则已经使用php-mysql

但是如果你想迁移到MySQL本机驱动程序根据文档你必须注意这些:

  

- 新的mysqlnd库需要使用MySQL 4.1的新版本   41字节密码格式。继续使用旧的16字节密码   会导致mysql_connect()和类似函数发出错误,   “mysqlnd无法使用旧身份验证连接到MySQL 4.1+。”在

     

- 新的mysqlnd库不读取mysql配置文件   (my.cnf / my.ini),就像旧的libmysqlclient库一样。如果你的   代码依赖于配置文件中的设置,您可以加载它   显式地使用mysqli_options()函数。请注意,这意味着   PDO特定常量PDO :: MYSQL_ATTR_READ_DEFAULT_FILE和   如果MySQL支持,则不定义PDO :: MYSQL_ATTR_READ_DEFAULT_GROUP   PDO是用mysqlnd编译的。

通常,从MySQL驱动程序迁移到MySQL本机驱动程序没有任何问题。它还建议使用php-mysqlnd而不是php-mysql。

答案 1 :(得分:1)

我想一般回答说不,删除php-mysql并安装php-mysqlnd是不安全的,特别是如果你不是“服务器人”。因为一旦我删除了php-mysql,我就删除了phpmyadmin,这真是一场灾难。

我最终(在Rackspace服务器人员的帮助下)将我的PHP升级到5.4(直到我将所有代码转换为使用mysqli后才能转到5.5)然后手动强制安装php54-mysqlnd-5.4.17-1.ius.el6.x86_64http://dev.mysql.com/downloads/connector/php-mysqlnd/),因为尝试“正常方式”Error: php54-mysql conflicts with php54-mysqlnd-5.4.17-1.ius.el6.x86_64时出错。希望这有助于某人。

答案 2 :(得分:1)

另外请注意,mysqlnd返回的数字是数字,而libmysqlclient(php-mysql)返回的所有类型都是字符串。

因此,如果您使用===,则可能会产生意外的行为。

在开发环境中使用mysqlnd的情况下,在生产环境中使用libmysqlclient的情况下,我遇到了一些错误,在这些错误中我比较了字符串值和整数值,但在dev服务器上,它们都是整数。