Доброго времени суток.
Простой запрос на выборку возвращает массив с данными, где каждый элемент массива является строкой. Код:
$r = $mysqli->query ("SELECT `id`, `name` FROM `users`");
$r->fetch_all (MYSQLI_ASSOC);
// вернет подобный результат
array (
'id' => '10',
'name' => 'Василий'
);
Можно ли получить результирующий набор с сохранением типов данных (int, string)? Если да, какую связку функций mysqli использовать? Если нет, вопрос больше познавательный: почему mysql так себя ведет?
Кстати, результаты подготавливаемого запроса возвращаются «как мне надо», то бишь тип данных сохраняется:
$r = $mysqli->prepare ("SELECT `id`, `name` FROM `users` WHERE `id` > ?");
$uid = 5;
$r->bind_param ('i', $uid);
$r->execute ();
$r->get_result ();
// вернет подобный результат
array (
'id' => 10,
'name' => 'Василий'
);
Решение: установка соответствующей опции.$db = new mysqli ('localhost', 'root', '', 'mytests');
$db->options (MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);