MeekroDB和PDO查询返回带有ONLY字符串的关联数组

时间:2016-09-09 21:00:58

标签: php pdo meekro

我在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) "igor@ppp.com"
    ["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) "igor@ppp.com"
    ["usr_blocked"]=>
    int(1) 0                          // Notice int
    ["usr_language"]=>
    string(2) "ES"
    ["usr_nickname"]=>
    string(5) "Ivan1"
    ["entc_id"]=>
    int(1) 1                          // Notice int
  }
}

关联数组应该具有在数据库中定义的相同数据类型。

1 个答案:

答案 0 :(得分:1)

使用Meekro,您无法获得类型化的结果,因为它没有使用预准备语句 - 唯一的方法是从获取中获取数据类型。

使用PDO时,只能if PDO is built upon mysqlnd and emulation mode is turned off。有了先决条件,您可以将结果放在相应的类型