php - 在托管网站中安装 mysqlnd

标签 php mysqli mysqlnd

我正在用 PHP - MySQL 开发一个网站。这里有一些注意事项:

  • 我正在使用 MySQLi API 进行数据库访问。
  • 在我本地安装的 XAMPP(Windows 7 机器)中,PHP 版本是 5.3.8,MySQL 版本是 mysqlnd 5.0.8-dev - 20102224
  • 我在免费托管服务器上托管了该网站,用于测试“cuccfree.com”。这里PHP版本是5.3.14,MySQL版本是5.1.66。与许多其他托管公司相比,它对 MySQLi 的支持仍然要好得多。
  • 在 phpinfo 上,本地机器显示安装了 mysqlnd 驱动程序,但托管服务器还没有。
  • 我为 MySQLi 创建了一个包装类,它使用函数 mysqli_stmt::get_result() 获取结果集。此函数在我的本地机器上有效,但在 cuccfree.com 托管服务器上无效,因为 mysqli 对象没有名为 get_result() 的方法。尽管如此,mysqli_stmt 对象已准备好 并且bind_param'ed 成功。
  • mysqli_stmt 的手册页 php.net说要使用 mysqli_stmt::get_result(),我们需要安装 mysqlnd 驱动程序。
  • 服务器的配置提供了 mysqli_stmt::bind_object() 的使用。但是 get_result() 对我来说似乎是一个更好的选择,因为我们可以得到数组形式的结果。我已经使用以下行覆盖了接受可变数量参数的函数:

    call_user_func_array(array($stmt, 'bind_param'), $params);

其中 $params 是一个参数数组。

  • 使用 bind_object(),我必须将返回的每一列绑定(bind)到一个变量。在那种情况下,我无法创建一个包装类函数来在一个点处理所有 SQL 查询。

我找了几家托管公司,和很多公司的客户支持进行了交谈和邮寄,包括 GoDaddy 和 Manas Hosting,他们不提供使用 mysqlnd。从逻辑上讲,他们坚持使用 VPS 或专用服务器。显然,这两个建议的选项都非常昂贵,即使是在入门级也是如此。

那么,最后我的问题是,我们可以在 Linux 服务器上将 mysqlnd 安装/嵌入到网站中吗?如果不是,我有什么选择可以防止我更改整个网站的代码,这将花费我很多很多天?

问候

最佳答案

我之前也经历过这种情况,它是一个真正的食客。如果您不想升级到 VPS,唯一的解决方案是使用 PDO。您可以尝试在共享主机帐户中使用 SSH,但祝您尝试更改任何东西都好运,因为网络管理员在网络托管方面很聪明。网络托管商甚至从 /etc/ 中删除了 yum.conf 并拒绝了对它的许可,因为您无法通过 yum 安装任何软件包。但是,如果您获得了 VPS 并且拥有 cpanel,则可以更改 PHP 的配置选项。我花了很长时间才弄明白这一点,但我了解到您可以通过运行 /usr/local/cpanel/scripts/easyapache 更改 CPanel 中的 PHP 选项。如果您运行 Apache 2.2,您还可以按照本文档更改 PHP 配置选项的配置选项。没有 VPS,我很确定无法像那样更改 CPanel。我希望这篇文章有所帮助。

关于php - 在托管网站中安装 mysqlnd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13728365/

相关文章:

php - 如何从数组中获取行? mysqli

php - Mysqlnd 无法连接到 MySQL 5.5 服务器

php - PDO MySQL 在执行语句时使 apache 崩溃

PHP PDO 返回 SELECT FOUND_ROWS() 不一致的结果

php - 缺少 Phalcon url 参数但仍会执行操作

php - 我的 PHP 代码更新一张表时出现错误

php - 如何从 MySQL 中存储的数组中获取不同的值?

php - 如何将数组中的字符串分解为更多数组 PHP

php - 我的 mysqli 代码有什么问题?

php - MySQL 查询在 OPTIMIZE TABLE 后返回不同的行(来自 PHP)