У меня есть следующий код на PHP-скрипте:
$DB = new MeekroDB($host, $user, $pass, $dbIntra, $port, $encoding);
$DB->throw_exception_on_error = true;
$DB->error_handler = false;
$DB->throw_exception_on_nonsql_error = true;
$result = $DB->query("SELECT usr_id, usr_username, usr_blocked, usr_language, usr_nickname, entc_id FROM usuario LIMIT 1");
var_dump($result);
В результате чего следующее:
array(1) {
[0]=>
array(6) {
["usr_id"]=>
string(1) "1"["usr_username"]=>
string(12) "[email protected]"["usr_blocked"]=>
string(1) "0"["usr_language"]=>
string(2) "ES"["usr_nickname"]=>
string(5) "Ivan1"["entc_id"]=>
string(1) "1"}
}
Есть ли способ заставить MeekroDB уважать типы данных, назначенные в модели базы данных?
ОБНОВИТЬ
Также пробовал с PDO с тем же результатом, кажется, это не MeekroDB, а PHP:
$dbh = new PDO('mysql:host=...;dbname=...', $user, $pass);
$query="SELECT usr_id, usr_username, usr_blocked, usr_language, usr_nickname, entc_id FROM usuario LIMIT 1";
$data = $dbh->query($query);
$result = $data->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);
ОБНОВИТЬ
Я бы ожидал что-то вроде этого:
array(1) {
[0]=>
array(6) {
["usr_id"]=>
int(1) 1 // Notice int
["usr_username"]=>
string(12) "[email protected]"["usr_blocked"]=>
int(1) 0 // Notice int
["usr_language"]=>
string(2) "ES"["usr_nickname"]=>
string(5) "Ivan1"["entc_id"]=>
int(1) 1 // Notice int
}
}
Ассоциативный массив должен иметь тот же тип данных, который определен в базе данных.
С Meekro вы не можете получить типизированные результаты, так как он не использует подготовленные операторы — единственный способ получить тип данных прямо из выборки.
С PDO возможно только если PDO построен на mysqlnd и режим эмуляции включен от. Имея там предпосылки, вы можете иметь свои результаты уже в соответствующих типах
Других решений пока нет …