Mysqlnd本机驱动程序即使加载也无法正常工作

时间:2015-02-08 15:22:02

标签: php mysql mysqlnd

php -i | grep mysqlnd的输出是:

  

客户端API版本=> mysqlnd 5.0.11-dev - 20120503 - $ Id:   40933630edef551dfaca71298a83fad8d03d62d4   客户端API库版本   => mysqlnd 5.0.11-dev - 20120503 - $ Id:40933630edef551dfaca71298a83fad8d03d62d4   mysqlnd mysqlnd =>启用   版本=> mysqlnd 5.0.11-dev - 20120503 - Id:40933630edef551dfaca71298a83fad8d03d62d   已加载的插件=> mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password   mysqlnd statistics =>客户端API版本=> mysqlnd 5.0.11-dev -   20120503 - $ Id:40933630edef551dfaca71298a83fad8d03d62d4

enter image description here

这表明它已加载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

我错过了一些配置/任何建议吗?

1 个答案:

答案 0 :(得分: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