【问题标题】:->fetch returns all fields as string->fetch 以字符串形式返回所有字段
【发布时间】:2022-01-03 17:38:27
【问题描述】:

即使在src/Database/StatementInterface.php 中,函数fetchfetchAll 也有这些注释:

  $statement = $connection->prepare('SELECT id, title from articles');
  $statement->execute();
  print_r($statement->fetchAll('assoc')); // will show [0 => ['id' => 1, 'title' => 'a title']]

函数将ALL字段返回为string,甚至字段都定义为数字:

  array(4) {
    ["lat"]=>
    string(11) "38.49580000"
    ["lng"]=>
    string(11) "-6.95301000"
    ["taken_at"]=>
    string(19) "2021-03-30 16:24:30"
    ["id"]=>
    string(1) "1

latlng 字段定义为 DECIMAL(10,8)|(11,8)id 定义为 INTEGER。 CakePHP 4.3.1 [以及以前的版本] 将字段返回为 string,这会破坏代码。

是我做错了什么还是这是一个错误?

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    您正在使用 CakePHP 提供的最低级别的数据库操作,这几乎是直接使用 PDO 操作,此处不适用 CakePHP 的强制转换,您将收到的具体内容将完全取决于 DBMS 和 PDO 驱动程序你正在使用。

    大多数驱动程序会将所有内容都作为字符串返回,其他驱动程序会强制转换一些值,例如使用 Postgres 可以获取整数,而使用 MySQL 你将获取所有内容作为字符串。

    【讨论】:

    • 感谢 ndm 的澄清。也许 CakePHP 团队可以将您的注释添加到文档中,因为它真的很混乱 - 当您不知道这个细节时。
    • @PeterVARGA 如果您在 GitHub 上创建问题,有人可能会接手这项任务 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多