首页 > 解决方案 > 查询获取数据时设置属性类型

问题描述

我注意到,如果我在数据库中注册任何内容,无论变量类型是什么,它都会作为字符串存储在其中。

当我通过查询获取它时,我还将得到一个字符串而不是整数、布尔值或其他任何值。

    $var = 1;

    $query = $dao->prepare('INSERT INTO table SET var = :var');
    $query->bindValue('var', $var, \PDO::PARAM_INT);
    $query->execute();

    $query = $dao->prepare('SELECT var FROM table');
    $query->execute();
    var_dump($query->fetchColumn()); // (string) "1" instead of (int) 1

这有点烦人,因为在将我的数据类型与某些值进行比较时我必须小心。

我正在使用 OOP。我的 Entity 对象在将数组传递给它们的构造函数时会自行水合,同时检查和设置它们的类型。

不幸的是,当我从数据库中获取数据时,我使用的是PDO::FETCH_CLASSconst,所以我的对象属性已设置,但它们都是字符串,因为没有使用类构造函数。

开发人员如何处理这个问题?

标签: phpdatabasetypes

解决方案


推荐阅读