2015-06-17 84 views
1

我對MySQL和PHP非常陌生,但是我已經尋找其他有關將JSON插入到MySQ中的線程,我無法使其工作。我試圖用從YouTube API v3檢索的JSON數據填充MySQL表。每次運行腳本時,它都會添加一行,但它看起來是空的。 我想從播放列表中檢索標題和說明,並將它們按照升序排列在不同的行中。從YouTube API v3插入Json到MySQL

謝謝。

<?php 

$conn = mysql_connect("server", "host","password") or die(mysql_error()); 
mysql_select_db("database", $conn); 

echo "Connected successfully"; 

$url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=25&playlistId=PLDcnymzs18LVXfO_x0Ei0R24qDbVtyy66&key={Key}'; 
$content = file_get_contents($url); 
$json = json_decode($content, true); 


foreach($json as $row); 


$title = $row['items']['snippet']['title']; 
$description = $row['items']['snippet']['description']; 



$sql = "INSERT INTO Table(title, description) 
VALUES('$title','$description')"; 
if(!mysql_query($sql,$conn)) 
{ 
    die('Error : ' . mysql_error()); 
} 

?> 

回答

0

您的foreach語句後的分號將立即終止循環。您需要刪除分號並在您想要在foreach循環中執行的代碼中放置括號。

此外,您需要循環使用$json['items']而不僅僅是$json。該數組中的每個項目代表一個視頻。當您抓取titledescription時,您無需參考items

因此,像這樣:

foreach($json['items'] as $row) 
{ 

    $title = $row['snippet']['title']; 
    $description = $row['snippet']['description']; 
    $sql = "INSERT INTO Table(title, description) VALUES('$title','$description')"; 

    if(!mysql_query($sql,$conn)) 
    { 
    die('Error : ' . mysql_error()); 
    } 
} 
+0

是啊,那做的工作,非常感謝。但是,現在我收到錯誤「您的SQL語法錯誤;查看與您的MySQL服務器版本相對應的手冊,在第1行'歌名'附近使用正確的語法。」有任何想法嗎? – user3599895

+0

嘗試將插入行更改爲:'$ sql =「INSERT INTO表(標題,說明)VALUES('」。$ title。「','。。$ description。」')「;' – theduck

+0

另外,使用參數化語句(又名準備語句)更好。這將防止任何SQL注入風險(儘管在這種情況下不太可能),更高效並確保數據正確地逃脫等。 – theduck