【发布时间】:2012-12-05 16:55:40
【问题描述】:
我正在用 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'ing 中,本地机器显示 mysqlnd 驱动已安装,但托管服务器没有。
- 我为 MySQLi 创建了一个包装类,它使用函数 mysqli_stmt::get_result() 获取 ResultSet。这个函数可以在我的本地机器上运行,但不能在 cuccfree.com 托管服务器上运行,因为 mysqli 对象没有名为 get_result() 的方法。不过,mysqli_stmt 对象已准备并成功bind_param'ed。
- php.net 上 mysqli_stmt 的手册页说要使用 mysqli_stmt::get_result(),我们需要有 mysqlnd 驱动程序已安装。
-
服务器的配置提供了 mysqli_stmt::bind_object() 的使用。但是
get_result()对我来说似乎是一个更好的选择,因为我们可以得到数组形式的结果。我已经使用以下行重写了函数以接受可变数量的参数:call_user_func_array(array($stmt, 'bind_param'), $params);
其中 $params 是一个参数数组。
- 使用 bind_object(),我必须将返回的每一列绑定到一个变量。在这种情况下,我无法创建一个包装类函数来一次性处理所有 SQL 查询。
我找了几家托管公司,与许多公司的客户支持交谈并邮寄,包括 GoDaddy 和 Manas Hosting,他们不提供 mysqlnd 的使用。他们非常合乎逻辑地坚持使用 VPS 或专用服务器。显然,这两种建议的选择都非常昂贵,即使在入门级也是如此。
那么,最后我的问题是,我们可以将 mysqlnd 安装/嵌入到 Linux 服务器上的网站中吗?如果没有,我有什么替代方法可以防止我更改整个网站的代码,这将花费我很多天?
问候
【问题讨论】: