【问题标题】:How can I fetch correct datatypes from MySQL with PDO? [duplicate]如何使用 PDO 从 MySQL 获取正确的数据类型? [复制]
【发布时间】:2013-02-05 07:01:34
【问题描述】:

我的 PDO 提取以字符串形式返回所有内容。

我有一个带有 id (int) 和 username (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 中的正确数据类型?

【问题讨论】:

  • 你会在 php.ini 中遇到这个问题。我建议您在 php 中添加您所期望的内容。
  • 你的意思是每次请求后我应该手动 intval() / strval() 每个参数?
  • 是的,我通常会做 'echo (int) "1";'或回显(字符串)“1”;
  • 这真的是一个问题吗?您是否因为结果不是 int 而遇到问题?
  • @Ping 附带说明:MySQL 的布尔值实际上是 tinyint 的同义词。当通过 PHP 处理 MySQL 到 JSON 时,显式类型转换是您的朋友。

标签: php mysql pdo


【解决方案1】:

您可以使用不同的fetch_style。如果你有一个 User 类,你可以强制 PDO 返回一个 User 类的实例

$statement->fetchAll(PDO::FETCH_CLASS, "User");

您现在可以在它所属的 User 类中处理属性验证和强制转换。

相关:

【讨论】:

  • 非常感谢,这是一个绝妙的主意,可以让代码更简洁。
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
相关资源
最近更新 更多