php - 即使加载,Mysqlnd native 驱动程序也无法工作

标签 php mysql mysqlnd

php -i | grep mysqlnd的输出是:

Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4 Client API library version => mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4 mysqlnd mysqlnd => enabled Version => mysqlnd 5.0.11-dev - 20120503 - Id: 40933630edef551dfaca71298a83fad8d03d62d Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password mysqlnd statistics => Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4

enter image description here

这表明它已加载 mysqlnd => enabled然而,所有数据库值仍然以字符串形式出现,而不是转换为 native PHP 类型:

$connection = new mysqli('127.0.0.1', 'root', '', 'my_database');

// Settings contains one tinyint field 'enabled'
$result = mysqli_query($connection, 'select * from settings');

var_dump(mysqli_fetch_array($result));

结果

array (size=1)
    'enabled' => string '1' (length=1)

预期

array (size=1)
   'enabled' => int 1

我是否缺少一些配置/任何建议?

最佳答案

看来 mysqlnd 仅当您使用 PDO 时才可用。

我已更改代码以使用 PDO,并确保模拟准备已关闭(否则它仍会返回字符串)。现在它转换为 PHP 数据类型! :-)

$pdo = new PDO('mysql:host=127.0.0.1;dbname=my_database', 'root', '');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$result = $pdo->query('select * from settings');

var_dump($result->fetch());

结果

array (size=1)
  'enabled' => int 1

关于php - 即使加载,Mysqlnd native 驱动程序也无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28395651/

相关文章:

mysql - 自动递增的 SQL 插入

mysql - 查询中的案例给出未定义的属性错误

java - 为 "select ... limit ?,?"准备好的查询检索元数据时出现 MySQLSyntaxErrorException

php - mysqlnd php_network_getaddresses : getaddrinfo failed: No such host is known

php - 使用bind_result返回超过1个mysql条目

PHP/MySQL header 和客户端库不匹配

php - 服务器更改后 .htaccess 中出现奇怪的问题

php - 将 mysql 与 php 和 ajax 一起使用,我想为此查询打印出一个字符串(而不是 0/1)

php - Mysql 搜索带有特殊字符的查询

php - 使用 PHP 或 Javascript 裁剪图像