Php 如何使用PDO从MySQL获取正确的数据类型?

Php 如何使用PDO从MySQL获取正确的数据类型?,php,mysql,pdo,Php,Mysql,Pdo,我的PDO fetch以字符串形式返回所有内容 我有一个id(int)和用户名(varchar)的用户类 当我尝试以下sql请求时 $db->prepare('SELECT * FROM users WHERE id=:id_user'); $db->bindParam(':id_user', $id_user); $db->execute(); $user_data = $db->fetch(PDO::FETCH_ASSOC); 和var_dump($user_dat

我的PDO fetch以字符串形式返回所有内容

我有一个id(int)和用户名(varchar)的用户类

当我尝试以下sql请求时

$db->prepare('SELECT * FROM users WHERE id=:id_user');
$db->bindParam(':id_user', $id_user);
$db->execute();
$user_data = $db->fetch(PDO::FETCH_ASSOC);
和var_dump($user_data),id参数是一个字符串。如何使PDO尊重mysql中的正确数据类型?

您可以使用不同的数据类型。如果您有一个用户类,那么可以强制PDO返回一个用户类的实例

$statement->fetchAll(PDO::FETCH_CLASS, "User");
现在,您可以在用户类所属的用户类中进行属性验证和强制转换

相关的:


在php中,您将很难解决这个问题。我建议您按预期使用php。您的意思是在每次请求后,我应该手动输入每个参数intval()/strval()?是的,我通常使用'echo(int)“1”;'或回声(字符串)“1”;这真的是一个问题吗?您是否因为结果不是int而遇到问题?@Ping只是作为旁注:MySQL的boolean实际上是一个tinyint同义词。因此,当通过PHP处理MySQL到JSON时,显式类型转换是您的朋友。非常感谢,这是一个很好的想法,可以产生更干净的代码。