【发布时间】:2020-05-09 01:21:11
【问题描述】:
$fetchedData = $query->fetchAll(PDO::FETCH_ASSOC);
返回
0 = {array} [8]
candidate_id = "2"
candidate_name = "Christine Hill"
company_id = "1"
end_date = "2016-09-30"
home_city = "Salisbury"
job_id = "8"
skill_id = "3"
start_date = "2016-01-01"
虽然某些字段(candidate_id、company_id、job_id、skill_id)在 MySql 数据库中被声明为 int(11)。
我想在 PHP 中将它们视为整数,并通过我的 AJAX 接口在 JSON 中返回它们。
我做错了吗?有什么方法可以避免 PHP 中的重复强制转换并让 PDO 返回与数据库中相同的类型?
【问题讨论】:
-
它是 PHP。你为什么在乎?如有必要,它会将它们作为数字处理。
-
如果您需要 JSON 中有数字 - 您可以在编码中使用
JSON_NUMERIC_CHECK。 -
查看@NigelRen 评论。 PHP DB 库总是返回字符串 AFAIK。
-
我唯一一次遇到这种需求是处理 xmlrpc 和一个严格的应用程序。刚结束在数据前往 xmlrpc 之前在数据上构建了一个 pre-caster。但值得庆幸的是 JSON 更好,
JSON_NUMERIC_CHECK做得很好(正如 Nigel 提到的)。 -
@tadman PDO 是,但 mysqlnd(通过 mysql 二进制协议)相反,对字段类型相当开明。 PDO 只是传达从他们那里得到的一切。
标签: php mysql pdo sqldatatypes