【问题标题】:MeekroDB and PDO query return associative array with ONLY stringsMeekroDB 和 PDO 查询返回仅包含字符串的关联数组
【发布时间】:2016-09-09 21:00:58
【问题描述】:

我在 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 关联数组应该具有在数据库中定义的相同数据类型。 (更新问题)
  • 所以..这是这个问题的重复:stackoverflow.com/questions/16129432/…
  • 并不是真正的重复,因为最初要求 MeekroDB(在幕后使用 mysqli)...后来尝试使用 PDO...但感谢您的反馈
  • 这里是 mysqli:stackoverflow.com/questions/5323146/…。 MeekroDB 只是对 mysqli 的一点升级,仅此而已。我最好不要使用这种(顺便说一句写得不好)的方法。但这取决于你。

标签: php pdo meekro


【解决方案1】:

使用 Meekro,您无法获得类型化的结果,因为它不使用准备好的语句 - 这是直接获取数据类型的唯一方法。

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

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 2023-04-08
    • 2014-10-30
    • 2014-03-27
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多