【问题标题】:Return JSON in php from mySql Database从 mySql 数据库返回 php 中的 JSON
【发布时间】:2017-02-10 18:43:16
【问题描述】:

我的数据库中有以下数据:

我想要下面的 JSON 格式的日期:

{
    "labels": ["12.11.2016", "13.11.2016", "14.11.2016", ...],
    "temperature": ["12", "35", "27", ...],
    "humidity": ["56", "70", "87", ...]
}

我当前的代码是:

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);

        //Select the requested data
        $sql = "SELECT date, temperature, humidity FROM `TestData` ORDER BY date ASC ";

        $statement = $conn->prepare($sql);
        $statement->execute();
        $result = $statement->fetchAll(PDO::FETCH_ASSOC);

        //Values returned for JavaScript
        $labels = array();
        $temperature = array();
        $humidity = array();
        $data = array();

        foreach ($result as $row)
        {
            array_push($labels, $row['date'] );
            array_push($temperature, $row['temperature']);
            array_push($humidity, $row['humidity']);
        }
        $result = null;

        //Load data in one single array
        $data['labels'] = $labels;
        $data['temperature'] = $temperature;
        $data['humidity'] = $humidity;
        //echo $data;
        //echo json_encode($labels , JSON_FORCE_OBJECT);
        echo json_encode($data);

但这只给了我以下 sh*t:

这里有人有想法吗?即使我已经在互联网上搜索了 5 个小时,我也无法让它工作:/

【问题讨论】:

  • $result 的输出是什么? var_dump($result)
  • 输出为here

标签: javascript php mysql arrays json


【解决方案1】:

试试:

array_push($labels, $row['DATE'] );
array_push($temperature, $row['TEMPERATURE']);
array_push($humidity, $row['HUMIDITY']);

由于$conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);,您的所有列名似乎都是大写的。

【讨论】:

  • 哈哈,WTF...这对我有用:D 好的,谢谢@Shawn。结果现在格式正确:)
  • 这背后的问题到底是什么?你能给我解释一下吗。我不认为,我在列中使用了大写描述...:/
  • 其实就是这一行:$conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
  • 啊,f*ck,是的......不再考虑这个了:/
【解决方案2】:

提取的输出是键值对。键是行号。

此外,您发布的 var 转储中的列名似乎是大写的。

试试这个以正确获取值:

foreach ($result as $key => $row)
{
    array_push($labels, $row['DATE'] );
    array_push($temperature, $row['TEMPERATURE']);
    array_push($humidity, $row['HUMIDITY']);
}

【讨论】:

  • 不,仍然给我那些空值...link
  • foreach ($result as $key => $row)foreach($result as $key) 在这种情况下无关紧要。
  • 是的,这也是我意识到的,确实是大写字母的问题
  • 现在也是正确答案...我无法检查其中的 2 个 :(
  • @FranzHuber23 Shawn 是第一个 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2018-04-21
  • 2015-12-05
  • 2015-11-01
  • 1970-01-01
相关资源
最近更新 更多