【问题标题】:Is possible to enable MySQL Native Driver (mysqlnd)? [duplicate]是否可以启用 MySQL 本机驱动程序 (mysqlnd)? [复制]
【发布时间】:2012-05-25 08:55:04
【问题描述】:

可能重复:
Call to undefined method mysqli_stmt::get_result

我的网络主机有 PHP 5.3.10,我正在使用 mysqli,但像 get_result() 这样的一些功能不起作用,因为它需要 mysqlnd

我做了一些测试,似乎没有使用mysqlnd。可以启用它或需要重新安装 PHP(我不能这样做,因为是虚拟主机)。

我不想更改我的代码以使其在没有它的情况下工作。

【问题讨论】:

  • @Repox 不重复,我想。我已经看到了这个问题,但它没有回答我在这里提出的问题。这个问题指出了我的问题。
  • 问题一样,已经给出了解决方案(也就是说你不能伪造或模拟资源对象中的get_result()方法)。
  • 为什么这个重复关闭?不是(尽管这是上一个的进步)。上一个问题是“为什么我不能使用mysqli_stmt::get_result?”,答案是“你需要启用mysqlnd才能使用它”。这个问题是“如何启用 mysqlnd?”上一个问题的答案范围与本问题的范围之间的重叠为零;在这个问题中提到get_result 只是因为它是上一个问题的答案导致发布者问这个问题。
  • 我也有同样的问题。它在这里得到了回答,但没有在“重复”问题中得到回答。为什么这被认为是重复的?
  • stackoverflow.com/a/52955565/6094503 解决了我的问题

标签: php mysqli mysqlnd


【解决方案1】:

mysqldnd 是一个库,提供与mysql_*mysqli_* 和 PDO 函数/方法的 MySQL 连接。

这三个扩展要么使用mysqlnd 编译,要么使用libmysql 编译;并且不能同时使用两者进行编译:它们使用一个库,或者另一个。
这意味着在libmysqlmysqlnd 之间切换的唯一方法是重新编译PHP(或者,至少是mysqli 扩展,在你的情况下);或安装针对所需库编译的版本。

基本上,这只能由您服务器的管理员来完成——因此,在您的情况下,您似乎被 libmysql 卡住了;即使它缺少一些有趣的功能。


再次强调,使用您不是管理员的托管服务具有优势(您的维护更少,您可能支付的费用更少),但您无法使用“您的”服务器做任何您想做的事情。

【讨论】:

  • 看来我无法添加答案,所以它必须是评论。如果您的虚拟主机有 cpanel,它可能有一个“选择 PHP 版本”选项。它在我的托管 Cpanel 和 PHP 选择器中进行,您可以选择扩展。我取消选中了 mysql、mysqli、pdo_mysql 扩展并检查了 nd_mysql、nd_mysqli、nd_pdo_mysql 和 myslqnd 扩展。这启用了 MySQLnd。我找不到这方面的文档,因此需要检查哪些扩展可能不是 100% 正确,但我希望在此处提供信息,因为我在其他任何地方都找不到任何信息
  • @Nat 你做得很好,在这里留下了非常有用的评论。它对我来说就像一个魅力!谢谢。
猜你喜欢
  • 2010-12-01
  • 1970-01-01
  • 2016-07-19
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 2015-02-22
  • 1970-01-01
相关资源
最近更新 更多