2016-08-22 3 views
1

にJSONファイルから正しい値を取得します。しかし、問題は、私は特定のフィールドから値を取得したい、ですが、それはただこれは私が輸入しようとしているJSONオブジェクトのうちの一つの例である1または2カントは、私は私自身のMySQLサーバへの外部APIからデータをインポートしようとしているMySQLサーバ

に設定します:

{ 
_index: "events", 
_type: "event", 
_id: "2290", **<-- THIS IS THE VALUE I WANT TO GET** 
_score: null, 
fields: { 
genres: [ 
"["World Music","Dance","Theater"]" 
], 
name: [ 
"Festival Spoffin 2016" 
], 
start: [ 
"2016-08-25T11:00:00+0000" 
], 
venue.location: [ 
5.387848, 
52.1563989 
], 
description: [ 
"TEXT" 
], 
logo: [ 
"URL" 
], 
header: [ 
"URL" 
], 
venue.country: [ 
"Nederland" 
], 
venue.city: [ 
"Amersfoort" 
] 
}, 
sort: [ 
1472122800000 
] 
}, 

しかし、私は良い作品私のクエリを実行すると、ここでのコードは次のとおりです。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
$jsondata = file_get_contents('https://hugo.events/genre/dance/next/900/1'); 
$data  = json_decode($jsondata, true); 
$uname = '****'; 
$upass = '****'; 
$dbh  = new PDO('mysql:host=localhost;dbname=wtd', $uname, $upass); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sql = "TRUNCATE TABLE dance"; 
$stmt = $dbh->prepare($sql); 
$stmt->execute(); 
if (!$stmt) { 
    echo "Statement failed"; 
} else { 
    $statement = $dbh->prepare("INSERT INTO dance(event_id, event_name, event_date, event_country, event_genres, event_desc, event_logo, event_header_pic) 
    VALUES(:eventid, :name, :date, :country, :genres, :desc, :logo, :header_pic)"); 
    $id  = $data[1]['hits']['hits'][1]['_id']; 
    foreach ($data[1]['hits']['hits'] as $row) { 
     $statement->execute(array(
      "eventid" => $row['_id'][0], **<-- THIS IS THE COLUMN I WANT TO PUT IT IN** 
      "name" => $row['fields']['name'][0], 
      "date" => $row['fields']['start'][0], 
      "country" => isset($row['fields']['venue.country']) ? $row['fields']['venue.country'][0] : '', 
      "genres" => $row['fields']['genres'][0], 
      "desc" => $row['fields']['description'][0], 
      "logo" => $row['fields']['logo'][0], 
      "header_pic" => $row['fields']['header'][0] 
     )); 
    } 
     echo "Data inserted into dance table"; 
} 

それはちょうど私がJSONとしてそれをエコーし​​たときに、これを返し、また、phpMyAdminの中で同じことを示しています

{ 
id: "1", 
event_id: "2", **<-- THIS IS SUPPOSED TO BE THE VALUE OF _ID** 
event_name: "Festival Spoffin 2016", 
event_date: "2016-08-25T11:00:00+0000", 
event_country: "Nederland", 
event_genres: "["World Music","Dance","Theater"]", 
event_desc: "TEXT", 
event_logo: "URL", 
event_header_pic: "URL" 
}, 

答えて

2

idが整数ではない配列であるので、あなたが最後に余分な[0]を必要としません。そうしないと、あなただけの整数の最初の番号を取得しています。

"eventid" => $row['_id'], 
+0

おかげで、それが働きました。私ができるときあなたの答えを受け入れるだろう! –

関連する問題