Вставка Json из YouTube API v3 в MySQL

Я очень новичок в MySQL и PHP, но я искал другие темы, касающиеся вставки JSON в MySQ, и я не могу заставить его работать. Я пытаюсь заполнить таблицу MySQL данными JSON, полученными из API YouTube v3. Каждый раз, когда я запускаю скрипт, он добавляет строку, но она кажется пустой. Я хочу получить заголовок и описание из списка воспроизведения и поместить их в отдельные строки в порядке возрастания.

Спасибо.

<?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());
}

?>

person user3599895    schedule 17.06.2015    source источник


Ответы (1)


Точка с запятой после вашего оператора foreach немедленно завершит цикл. Вам нужно удалить точку с запятой и поместить в скобки код, который вы хотите выполнить в цикле foreach.

Кроме того, вам нужно зацикливаться на $json['items'], а не только на $json. Каждый элемент в этом массиве представляет одно видео. Тогда вам не нужно ссылаться на items, когда вы захватываете title и description.

Что-то вроде этого:

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());
  }
}
person theduck    schedule 17.06.2015
comment
Да, это сделало работу, большое спасибо. Однако теперь я получаю сообщение об ошибке У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, чтобы узнать, какой синтаксис использовать рядом с «Название песни» в строке 1. Есть идеи? - person user3599895; 17.06.2015
comment
Попробуйте изменить строку вставки на: $sql = "INSERT INTO Table(title, description) VALUES('" . $title . "','" . $description . "')"; - person theduck; 17.06.2015
comment
Кроме того, вам, вероятно, лучше использовать параметризованный оператор (также известный как подготовленный оператор). Это предотвратит любые риски SQL-инъекций (хотя в этом случае маловероятно), более эффективно, а также обеспечит правильное экранирование данных и т. д. - person theduck; 17.06.2015
comment
Еще раз спасибо, я все еще получаю ту же ошибку с синтаксисом SQL. Есть еще идеи, что это может быть? Извиняюсь за крайне новичковые вопросы. Я посмотрю на параметризованные операторы. - person user3599895; 17.06.2015
comment
Я предполагаю, что где-то в одном из заголовков или описаний есть ' (цитата), и это портит ваш оператор SQL. Вы можете избежать переменных, но параметризованные операторы, вероятно, являются лучшим путем во всех отношениях. - person theduck; 17.06.2015