MeekroDB和PDO查询返回仅包含字符串的关联数组

3

我在一个 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
  }
}

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

抱歉,您能解释一下您期望的结果是什么吗? - jaro1989
@jaro1989 关联数组应该与数据库中定义的数据类型相同。(更新的问题) - supercoco
所以...这是一个重复的问题:https://dev59.com/K2Qo5IYBdhLWcg3wV-Mx - jaro1989
这并不是一个重复问题,因为最初询问的是MeekroDB(在后台使用mysqli)...后来尝试了PDO...但还是感谢您的反馈。 - supercoco
以下是关于mysqli的内容:https://dev59.com/Lm435IYBdhLWcg3wlRQf。MeekroDB只是对mysqli的小升级,没有更多的功能。我建议不要使用这种(顺便说一下,写得很糟糕)方法。但这取决于你。 - jaro1989
1个回答

1
使用Meekro无法获得类型化结果,因为它不使用预处理语句 - 获取数据类型的唯一方法是在提取时获取。
对于PDO,只有在PDO建立在mysqlnd并且模拟模式已关闭的情况下才可能。如果满足这些先决条件,则可以直接获得相应类型的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接