0

的输出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

在此处输入图像描述

这表明它已加载,mysqlnd => enabled但所有数据库值仍以字符串形式出现,未转换为原生 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

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

4

1 回答 1

0

所以似乎 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
于 2015-02-08T16:44:01.670 回答