PHP   发布时间:2019-11-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – 如何正确格式化PDO结果? – 数字结果以字符串形式返回?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
随着 AJAX的相对新颖,现在刚刚开始学习PDO,ReSTler的额外水平让我完全厌恶.从Restler示例中对下面的代码进行建模,我不知道如何将输出格式从PDO返回到Restler和Highcharts期望的内容.

如何更改此代码以从当前格式获取所需格式? (结果通常是5K-10K记录,如果这是处理MySQL结果的一个因素.)

ReSTler API代码段:

$sql = "SELECT ....."
$this->db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
try {
    $stmt = $this->db->query($sql);
    return $stmt->fetchAll();
} catch (PDOException $E) {
    throw new RestException(502,'LisTing History: ' . $e->getmessage());
}

当前输出格式(包括不需要的列名称):

[
  {
    "chart_date": "1118966400000","bandwidth": "10.01","views": "101"
  },{
    "chart_date": "1119225600000","bandwidth": "20.02",

期望的输出格式(数字和无列名称):

[
  [
    1118966400000,10.01,101
  ],[
    1119225600000,20.02,202
  ],

使用建议的提取(PDO :: FETCH_NUM)进行编辑:

根据@Ricardo LohmAnn的回答,我尝试了fetch(PDO :: FETCH_NUM),DID删除了列名,但所有返回的列似乎都是字符串,而不是数字,因为数据实际上是,所以试试这个,给我一个正确的数据类型 – 这是PDO单方面返回字符串的一部分吗?

while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
    $arraY[$x][0] = intval( $row[0] );
    $arraY[$x][1] = intval( $row[1] );
    $arraY[$x][2] = intval( $row[2] );
    $x++;
}
return $array;

解决方法

PDO :: FETCH_NUM是要走的路,然它并不意味着数字列将保持数字,但它只意味着你将获得一个索引数组而不是一个关联数组(因此,它只能完成列名的省略). @H_388_2@mySQL PDO驱动程序总是返回数字列的字符串,即a known bug,但不幸的是,php开发人员公然忽视的许多错误之一是“谢谢你,但这不是一个bug”.

您可以强制json_encode将实际数字用于看起来像数字的值:json_encode($data,JSON_NUMERIC_checK)(自php 5.3.3起).

大佬总结

以上是大佬教程为你收集整理的php – 如何正确格式化PDO结果? – 数字结果以字符串形式返回?全部内容,希望文章能够帮你解决php – 如何正确格式化PDO结果? – 数字结果以字符串形式返回?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。