0

yql から生成されたこの json スクリプトからデータを取得する方法を教えてください。ここから取得したデータを mysql に保存したい... データを抽出または取得したい AskRealtime、BidRealtime、LastTradeDate、LastTradePriceOnly、LastTradeTime、Ask

<?php
session_start();
query= Insert into table .....value ...
?>

以下の json から上記のスクリプトのようなことをしたいと思います。抽出したデータを mysql に送信してそこからデータをプルすることなく、html テーブルの 1 つの同じページに直接出力できれば、より良い結果が得られます。

`{

"query": {
    "count": 5,
    "created": "2012-05-11T01:14:55Z",
    "lang": "en-US",
    "diagnostics": {
        "publiclyCallable": "true",
        "redirect": {
            "from": "http://datatables.org/alltables.env",
            "status": "301",
            "content": "http://www.datatables.org/alltables.env"
        },
        "url": [
            {
                "execution-start-time": "425",
                "execution-stop-time": "865",
                "execution-time": "440",
                "proxy": "DEFAULT",
                "content": "http://datatables.org/alltables.env"
            },
            {
                "execution-start-time": "884",
                "execution-stop-time": "1097",
                "execution-time": "213",
                "proxy": "DEFAULT",
                "content": "http://www.datatables.org/yahoo/finance/yahoo.finance.quotes.xml"
            },
            {
                "execution-start-time": "1307",
                "execution-stop-time": "1307",
                "execution-time": "0",
                "proxy": "DEFAULT",
                "content": "http://download.finance.yahoo.com/d/quotes.csv?f=aa2bb2b3b4cc1c3c6c8dd1d2ee1e7e8e9ghjkg1g3g4g5g6ii5j1j3j4j5j6k1k2k4k5ll1l2l3mm2m3m4m5m6m7m8nn4opp1p2p5p6qrr1r2r5r6r7ss1s7t1t7t8vv1v7ww1w4xy&s=XAUUSD%3DX,XAGUSD%3DX,PLN12.NYM,PAK12.NYM,USDCAD%3DX"
            }
        ],
        "query": {
            "execution-start-time": "1105",
            "execution-stop-time": "1308",
            "execution-time": "203",
            "params": "{url=[http://download.finance.yahoo.com/d/quotes.csv?f=aa2bb2b3b4cc1c3c6c8dd1d2ee1e7e8e9ghjkg1g3g4g5g6ii5j1j3j4j5j6k1k2k4k5ll1l2l3mm2m3m4m5m6m7m8nn4opp1p2p5p6qrr1r2r5r6r7ss1s7t1t7t8vv1v7ww1w4xy&s=XAUUSD%3DX,XAGUSD%3DX,PLN12.NYM,PAK12.NYM,USDCAD%3DX]}",
            "content": "select * from csv where url=@url and columns='Ask,AverageDailyVolume,Bid,AskRealtime,BidRealtime,BookValue,Change&PercentChange,Change,Commission,ChangeRealtime,AfterHoursChangeRealtime,DividendShare,LastTradeDate,TradeDate,EarningsShare,ErrorIndicationreturnedforsymbolchangedinvalid,EPSEstimateCurrentYear,EPSEstimateNextYear,EPSEstimateNextQuarter,DaysLow,DaysHigh,YearLow,YearHigh,HoldingsGainPercent,AnnualizedGain,HoldingsGain,HoldingsGainPercentRealtime,HoldingsGainRealtime,MoreInfo,OrderBookRealtime,MarketCapitalization,MarketCapRealtime,EBITDA,ChangeFromYearLow,PercentChangeFromYearLow,LastTradeRealtimeWithTime,ChangePercentRealtime,ChangeFromYearHigh,PercebtChangeFromYearHigh,LastTradeWithTime,LastTradePriceOnly,HighLimit,LowLimit,DaysRange,DaysRangeRealtime,FiftydayMovingAverage,TwoHundreddayMovingAverage,ChangeFromTwoHundreddayMovingAverage,PercentChangeFromTwoHundreddayMovingAverage,ChangeFromFiftydayMovingAverage,PercentChangeFromFiftydayMovingAverage,Name,Notes,Open,PreviousClose,PricePaid,ChangeinPercent,PriceSales,PriceBook,ExDividendDate,PERatio,DividendPayDate,PERatioRealtime,PEGRatio,PriceEPSEstimateCurrentYear,PriceEPSEstimateNextYear,Symbol,SharesOwned,ShortRatio,LastTradeTime,TickerTrend,OneyrTargetPrice,Volume,HoldingsValue,HoldingsValueRealtime,YearRange,DaysValueChange,DaysValueChangeRealtime,StockExchange,DividendYield'"
        },
        "javascript": {
            "execution-time": "266",
            "instructions-used": "302754",
            "table-name": "yahoo.finance.quotes"
        },
        "warning": "Unable to sort response according to field 'Ask,Bid,AskRealtime,BidRealtime,LastTradeDate,LastTradePriceOnly,LastTradeTime'.",
        "user-time": "1373",
        "service-time": "653",
        "build-version": "27222"
    },
    "results": {
        "quote": [
            {
                "symbol": "XAUUSD=X",
                "Bid": "1590.9498",
                "AskRealtime": null,
                "BidRealtime": null,
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "1590.5499",
                "LastTradeTime": "9:12pm",
                "Ask": "1590.15"
            },
            {
                "symbol": "XAGUSD=X",
                "Bid": null,
                "AskRealtime": null,
                "BidRealtime": null,
                "LastTradeDate": "5/10/2012",
                "LastTradePriceOnly": "29.136",
                "LastTradeTime": "5:27pm",
                "Ask": null
            },
            {
                "symbol": "PLN12.NYM",
                "Bid": null,
                "AskRealtime": "1486.50",
                "BidRealtime": "1486.00",
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "1486.00",
                "LastTradeTime": "8:44pm",
                "Ask": null
            },
            {
                "symbol": "PAK12.NYM",
                "Bid": null,
                "AskRealtime": "616.00",
                "BidRealtime": "609.40",
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "658.80",
                "LastTradeTime": "8:00pm",
                "Ask": null
            },
            {
                "symbol": "USDCAD=X",
                "Bid": "1.0033",
                "AskRealtime": null,
                "BidRealtime": null,
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "1.0034",
                "LastTradeTime": "9:13pm",
                "Ask": "1.0035"
            }
        ]
    }
}

}`

この json スクリプトへのリンクはこちらYQL によって生成された Json スクリプトjson スクリプトはhttp://jsonlint.com/ から検証されます

4

1 に答える 1

1

あなたの質問を正しく理解できたら、その JSON を取得して、その中のデータにアクセスできるようにしますか? JSON を少し使いやすくするために、JSON をPHPで使用可能な配列に変換するjson_decode 関数を使用する次のコードを使用することをお勧めします。(結果の連想配列がどのように見えるかを確認できるように、echo ステートメントを含めました)

$yql_json =
'{
"query": {
    "count": 5,
    "created": "2012-05-11T01:14:55Z",
    "lang": "en-US",
    "diagnostics": {
        "publiclyCallable": "true",
        "redirect": {
            "from": "http://datatables.org/alltables.env",
            "status": "301",
            "content": "http://www.datatables.org/alltables.env"
        },
        "url": [
            {
                "execution-start-time": "425",
                "execution-stop-time": "865",
                "execution-time": "440",
                "proxy": "DEFAULT",
                "content": "http://datatables.org/alltables.env"
            },
            {
                "execution-start-time": "884",
                "execution-stop-time": "1097",
                "execution-time": "213",
                "proxy": "DEFAULT",
                "content": "http://www.datatables.org/yahoo/finance/yahoo.finance.quotes.xml"
            },
            {
                "execution-start-time": "1307",
                "execution-stop-time": "1307",
                "execution-time": "0",
                "proxy": "DEFAULT",
                "content": "http://download.finance.yahoo.com/d/quotes.csv?f=aa2bb2b3b4cc1c3c6c8dd1d2ee1e7e8e9ghjkg1g3g4g5g6ii5j1j3j4j5j6k1k2k4k5ll1l2l3mm2m3m4m5m6m7m8nn4opp1p2p5p6qrr1r2r5r6r7ss1s7t1t7t8vv1v7ww1w4xy&s=XAUUSD%3DX,XAGUSD%3DX,PLN12.NYM,PAK12.NYM,USDCAD%3DX"
            }
        ],
        "query": {
            "execution-start-time": "1105",
            "execution-stop-time": "1308",
            "execution-time": "203",
            "params": "{url=[http://download.finance.yahoo.com/d/quotes.csv?f=aa2bb2b3b4cc1c3c6c8dd1d2ee1e7e8e9ghjkg1g3g4g5g6ii5j1j3j4j5j6k1k2k4k5ll1l2l3mm2m3m4m5m6m7m8nn4opp1p2p5p6qrr1r2r5r6r7ss1s7t1t7t8vv1v7ww1w4xy&s=XAUUSD%3DX,XAGUSD%3DX,PLN12.NYM,PAK12.NYM,USDCAD%3DX]}",
            "content": "select * from csv where url=@url and columns=\'Ask,AverageDailyVolume,Bid,AskRealtime,BidRealtime,BookValue,Change&PercentChange,Change,Commission,ChangeRealtime,AfterHoursChangeRealtime,DividendShare,LastTradeDate,TradeDate,EarningsShare,ErrorIndicationreturnedforsymbolchangedinvalid,EPSEstimateCurrentYear,EPSEstimateNextYear,EPSEstimateNextQuarter,DaysLow,DaysHigh,YearLow,YearHigh,HoldingsGainPercent,AnnualizedGain,HoldingsGain,HoldingsGainPercentRealtime,HoldingsGainRealtime,MoreInfo,OrderBookRealtime,MarketCapitalization,MarketCapRealtime,EBITDA,ChangeFromYearLow,PercentChangeFromYearLow,LastTradeRealtimeWithTime,ChangePercentRealtime,ChangeFromYearHigh,PercebtChangeFromYearHigh,LastTradeWithTime,LastTradePriceOnly,HighLimit,LowLimit,DaysRange,DaysRangeRealtime,FiftydayMovingAverage,TwoHundreddayMovingAverage,ChangeFromTwoHundreddayMovingAverage,PercentChangeFromTwoHundreddayMovingAverage,ChangeFromFiftydayMovingAverage,PercentChangeFromFiftydayMovingAverage,Name,Notes,Open,PreviousClose,PricePaid,ChangeinPercent,PriceSales,PriceBook,ExDividendDate,PERatio,DividendPayDate,PERatioRealtime,PEGRatio,PriceEPSEstimateCurrentYear,PriceEPSEstimateNextYear,Symbol,SharesOwned,ShortRatio,LastTradeTime,TickerTrend,OneyrTargetPrice,Volume,HoldingsValue,HoldingsValueRealtime,YearRange,DaysValueChange,DaysValueChangeRealtime,StockExchange,DividendYield\'"
        },
        "javascript": {
            "execution-time": "266",
            "instructions-used": "302754",
            "table-name": "yahoo.finance.quotes"
        },
        "warning": "Unable to sort response according to field \'Ask,Bid,AskRealtime,BidRealtime,LastTradeDate,LastTradePriceOnly,LastTradeTime\'.",
        "user-time": "1373",
        "service-time": "653",
        "build-version": "27222"
    },
    "results": {
        "quote": [
            {
                "symbol": "XAUUSD=X",
                "Bid": "1590.9498",
                "AskRealtime": null,
                "BidRealtime": null,
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "1590.5499",
                "LastTradeTime": "9:12pm",
                "Ask": "1590.15"
            },
            {
                "symbol": "XAGUSD=X",
                "Bid": null,
                "AskRealtime": null,
                "BidRealtime": null,
                "LastTradeDate": "5/10/2012",
                "LastTradePriceOnly": "29.136",
                "LastTradeTime": "5:27pm",
                "Ask": null
            },
            {
                "symbol": "PLN12.NYM",
                "Bid": null,
                "AskRealtime": "1486.50",
                "BidRealtime": "1486.00",
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "1486.00",
                "LastTradeTime": "8:44pm",
                "Ask": null
            },
            {
                "symbol": "PAK12.NYM",
                "Bid": null,
                "AskRealtime": "616.00",
                "BidRealtime": "609.40",
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "658.80",
                "LastTradeTime": "8:00pm",
                "Ask": null
            },
            {
                "symbol": "USDCAD=X",
                "Bid": "1.0033",
                "AskRealtime": null,
                "BidRealtime": null,
                "LastTradeDate": "5/11/2012",
                "LastTradePriceOnly": "1.0034",
                "LastTradeTime": "9:13pm",
                "Ask": "1.0035"
            }
        ]
    }
}
}';

$yql_results = json_decode($yql_json, true);
echo "<pre>".print_r($yql_results, true)."</pre>";

$yql_json 入力は文字列としての json そのものであり (収集して保存する方法は問いません)、関数に渡される true の値により、関数は $yql_result に保存される連想配列を返します。この後、すべてのアイテムに簡単にアクセスできます。あなたの質問の少なくとも一部に答えていただければ幸いです。あなたのプロジェクトで頑張ってください。

于 2012-05-11T03:52:37.923 に答える