问题标签 [mysqlnd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 如何知道 MySQLnd 是否是活动驱动程序?
也许这是一个显而易见的问题,但我想确定一下。
我怎么知道它 MySQLnd 是否是活动驱动程序?
我正在运行 PHP 5.3 和 MySQL 5.1.37。在 phpinfo() 中列出了 mysqlnd,但仅此我无法确定我使用的是 MySQLnd 还是旧驱动程序...
phpinfo() 输出的提取
我正在使用 PDO,而 PDO 驱动程序说 mysql ...
php - 从 mysql 变形为 mysqli
我对 PHP 中的 mysqli 接口有点困惑。当我昨天着手将我的旧 mysql 代码更改为 mysqli 时,文档引导我走上了::prepare
,::bind_params
和::execute
.
在我努力处理结果的过程中,我最终编写了自己的 fetch_assoc - 并且遇到了我在 SO 上讨论的问题。一位评论员询问我没有使用什么::fetch_assoc
。我什至没有注意到 mysqli_result 类。当我将我的 mysqli 代码从::preapre
to变形时::query
,结果处理变得更加容易 - 除了一个例外:当我以前用来::bind_results
提取列时,产生的 PHP 关联数组将携带正确的数据类型;当我现在使用::fetch_assoc
etc 时,我得到的只是一个字符串数组。
我现在正在编写一个转换器。我只是想,既然我在理解 mysqli 库时已经犯了一个主要错误,我最好在这里发帖,看看是否有一种“官方”的方式来获取类型一致的关联结果数组。
php - 是否可以启用 MySQL 本机驱动程序 (mysqlnd)?
我的网络主机有 PHP 5.3.10 并且我正在使用mysqli
,但某些功能(例如get_result()
)不起作用,因为它需要mysqlnd
.
我做了一些测试,似乎mysqlnd
没有使用。可以启用它或需要重新安装 PHP(我不能这样做,因为它是一个网络托管)。
我不想改变我的代码在没有它的情况下工作。
mysql - MySQL/PDO 截断数据
$book
是一个 7kb 的字符串。如果使用 PHP PDO 执行此查询exec
,则monograph
列 (LONGTEXT) 数据在 6765 个字符处被截断:
但是,如果我打印查询并使用 SQL 客户端(绕过 PHP)执行它,它会将所有数据插入数据库。这让我觉得这是我还不熟悉的 PHP 设置。
请注意,如果我使用准备好的语句(包括使用 PDO::PARAM_LOB),也会发生同样的情况。
$book
exec
在https://gist.github.com/79d5fe1050bbb0e2fac8 (7157)之前转储的值。最终在数据库中的实际数据https://gist.github.com/df49d4a9707660b8b60b (6765)。我不明白这种数据截断在技术上是如何可能的,因为整个查询都传递给了 MySQL(否则会弹出 SQL 语法错误)。
如果我使用 SQL 客户端执行输出 (https://gist.github.com/a05fe4c033e74897b82b),这是最终在数据库中的数据https://gist.github.com/88870fe26a3ae40e991e (7157,预期)。
PDO 使用 UTF8 连接启动。
更新 2012 年 7 月 25 日 04:11 EST
现在我知道这是编码问题。
但是,我不确定该怎么做。我与 MySQL 的连接已经是 unicode。
/etc/my.cnf
配置为在服务器范围内使用以下设置。
php - 致命错误:调用未定义的方法 mysqli_result::fetch_all()
我在 Ubuntu 10.04 中遇到了 PHP 问题。当我尝试使用 mysqli_result::fetch_all 时出现此错误:
调用未定义的方法 mysqli_result::fetch_all()
但是,它适用于 Windows XP。
编码:
我不想将fetch_assoc与循环一起使用,因为我将结果发送到另一层进行处理。
我正在使用 PHP 5.4.4。和php -m | grep mysql没有出现的 mysqlnd 模块。我该如何安装它?这可能是问题吗?
php - MAMP 与 MySQL 自然驱动程序
所以我一直在与 MAMP 合作,在我的计算机上本地开发一个站点,但真正困扰我的一件事是 MAMP 没有附带 MySQL Natural Driver for PHP。所以我不能使用可爱的get_result()
功能。我什至尝试使用驱动程序手动编译 PHP,但很快就火了。如果无法使用 mysqlnd 设置 MAMP,那么有人可以解释获得它的最佳方法是什么?运行 Mac OS X 10.7 Lion。
mysql - 从 PHP5.3.13 命令行界面连接 MySQL 4.1
可能重复:
无法使用旧身份验证连接到 MySQL 4.1+
我发布这个问题是因为我找不到任何可行的解决方案。所以请见谅。
我正在使用 mysql 5.5.24 和 PHP 5.3.13(都来自 WAMP2 安装)
虽然我能够通过网络服务器从 php 脚本连接到数据库,但相同的脚本会出现以下错误。
无法连接:mysqlnd 无法使用旧的不安全身份验证连接到 MySQL 4.1+。请使用管理工具通过命令 SET PASSWORD = PASSWORD('your_existing_password') 重置密码。这将在 mysql.user 中存储一个新的、更安全的哈希值。如果此用户在 PHP 5.2 或更早版本执行的其他脚本中使用,您可能需要从 my.cnf 文件中删除 old-passwords 标志
这里有几件事我已经:
- 我尝试通过 mysql 控制台更改密码。
- 实现了特权。
将 phpMyAdmin 的 config.ini.php 中的以下行从
$cfg['Servers'][$i]['extension'] = ' mysqli ' 到
$cfg['Servers'][$i]['extension'] = ' mysql '
无济于事。
错误信息是指这个版本的 mysql 中不存在的my.cnf文件。所以我认为它一定是my.ini,但没有提到旧密码。
我怎样才能让这个东西工作?
php - 如何为 php 启用 mysqlnd?
我已经安装并运行了 PHP(版本:5.3.17),我想切换到 mysqlnd(在 phpinfo 中,mysqlnd 根本不存在)。
我读到要设置它,您需要更新./configure
命令:
当我尝试安装它时yum install php-mysqlnd
出现错误:
php - 使用 apc 编译 mysqlnd_qc 时出错
运行命令pecl install mysqlnd_qc
以APC
启用启用安装缓存我收到以下错误:
如果没有启用 APC,它编译得很好......
PHP版本:5.3.17
在 Amazon RDS 上运行。
静态编译 APC 和 MySQL Query Cache 是什么意思?
它是如何完成的?
更新1:
由于我还没有设法用 APC 编译 mysqlnd_qc,所以我尝试用memcached
. 这是一个有趣的问题。该./configure
命令无法识别pecl
为memcache
. 我发现选项输入错误...
所以我pecl
在询问选项时终止了安装并自己运行了以下命令:
所以memcached
现在可以使用它了。
如果在Fedora
(我猜也是RedHat
and CentOS
)上运行,则可以使用rpm
:
更新 2:
我设法用 APC 编译,请参阅下面的详细答案。
php - 在托管网站中安装 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'ing 两者中,本地机器显示已安装mysqlnd驱动程序,但托管服务器尚未安装。
- 我为 MySQLi 创建了一个包装类,它使用函数mysqli_stmt::get_result()获取 ResultSet 。这个函数在我的本地机器上有效,但在 cuccfree.com 托管服务器上无效,因为mysqli对象没有名为get_result()的方法。不过,mysqli_stmt对象已准备好并已成功绑定参数。
- 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 服务器上的网站中吗?如果没有,我有什么替代方法可以阻止我更改整个网站的代码,这将花费我很多天?
问候