我注意到,如果我在数据库中注册了任何内容,无论变量类型是什么,它都将作为字符串存储在其中。
当我通过查询获取它时,我还将得到一个字符串,而不是整数,布尔值或其他任何值。
$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。当将数组传递给构造函数时,“我的实体”对象会自我补水,同时检查并设置其类型。
不幸的是,当我从数据库中获取数据时,我使用的是PDO::FETCH_CLASS
const,因此设置了我的对象属性,但是由于未使用类构造函数,所以它们都是字符串。
开发人员如何处理此问题?