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

введите описание изображения здесь

Что говорит о том, что он загружен 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

Я пропускаю некоторые настройки / какие-либо предложения?

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
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]