【问题标题】:Decode multidimensional array and insert into mysql解码多维数组并插入mysql
【发布时间】:2016-02-15 09:53:36
【问题描述】:

在使用 ajax 将 xmlhttp 请求发送到 php 文件并将其插入 mysql 数据库后,我无法从该请求中获取值。我从 yahoo Finance api 获得了您可以在 html sn-p 中看到的输出。之后这个 html 元素的值应该被发送到文件insertvolume.php

成功发送后,我将数据保存到名为$jsonString 的变量中并对其进行解码。然后我尝试将数组中的特定值插入到我的 mysql 数据库中,但它不起作用。我认为问题在于该值在任何其他数组中,但我不知道如何编写。我只需要名为results 的数组有什么提示吗?

html:

   <div id="output">{"query{"count":1,"created":"20160215T09:15:04Z","lang":"deDE","resu‌​lts":{"quote":{"symbol":"ZN","Ask":"2.05","LastTradeRealtimeWithTime":null,"Chang‌​ePercentRealime":null,"ChangeFromYearHigh":"-0.45","LastTradeWithTime":"4:00pm<b>‌​1.81</b>",astTradePriceOnly":"1.81", "Volume":"500","HighLimit":null,"LowLimit":null,"DaysRange":‌​"1.781"}}}}</div>   

javascript:

var outputt = $('#output').text();
$.ajax({
            type: "POST",
            dataType: "json",
            url: "insertvolume.php",
            data: {myData: outputt},
            success: function(data){
                //alert('Items added');
            }
    });

一些来自 insertvolume php 的代码:

 $jsonString = $_POST['mydata'];
    $jsonArray = json_decode($jsonString, true);
$jsonArray1 = $jsonArray['query']['results']['quote'];
    if ($stmt = $mysqli->prepare('INSERT INTO volume ( stocksymbol, volume, time) VALUES ( ?, ?, now())')) {

        /* bind parameters for markers */
        $stmt->bind_param($jsonArray1['symbol'], $jsonArray1['volume']);

        /* execute query */
        $stmt->execute();

        /* close statement */
        $stmt->close();
    }

【问题讨论】:

  • 我不知道该 JSON 是否无效,或者当您将其粘贴时它搞砸了。事实上,其中有换行符。
  • 我做了这些换行符以便更好地阅读,但我可以删除它们。
  • 你的html输出是这样的吗:&lt;div id="output"&gt;{"query{"count":1,"created":"20160215T09:15:04Z","lang":"deDE","results":{"quote":{"symbol":"ZN","Ask":"2.05","LastTradeRealtimeWithTime":null,"ChangePercentRealime":null,"ChangeFromYearHigh":"-0.45","LastTradeWithTime":"4:00pm&lt;b&gt;1.81&lt;/b&gt;",astTradePriceOnly":"1.81","HighLimit":null,"LowLimit":null,"DaysRange":"1.781}}}}&lt;/div&gt;

标签: javascript php mysql json


【解决方案1】:

解码数据后,您无法直接检索 json 数据。我们应该为此创建对象。这里我给你一个如何访问json值的参考链接。

Get value from JSON array in PHP

【讨论】:

  • 我可以这样解码吗:´$jsonArray = json_decode($jsonString, true);´ 并进入 mysql instad of ´$jsonArray1['volume']´ 这个:´$query->结果[0]->{"quote"}->Volume´?选择 this 的特定值时,我不明白规则/语法:´$query->results[0]->{"quote"}->Volume´ 是这样吗?
【解决方案2】:

在javascript代码中它被写成 var outputt = $( "#output" ).val();

但是 div 没有价值。内容存在于 div 中。所以将行代码更改为

var outputt = document.getElementById('output').textContent 并尝试。

现在您可以在 javascript 中访问该数组。但是我们无法从您的线路访问输出代码的数据。

【讨论】:

  • 哦,谢谢,我不知道 div 没有 value 属性,但它并没有改变行为。
【解决方案3】:

在ajax调用中删除该行

contentType: "application/json; charset=utf-8",

然后执行。它会工作

【讨论】:

  • 我删除了该行但没有任何反应。
猜你喜欢
  • 2011-05-26
  • 1970-01-01
  • 2017-12-17
  • 2017-03-19
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
相关资源
最近更新 更多