【问题标题】:Inserting Json from YouTube API v3 into MySQL将来自 YouTube API v3 的 Json 插入 MySQL
【发布时间】:2015-09-02 12:25:52
【问题描述】:

我对 MySQL 和 PHP 非常陌生,但我已经寻找其他有关将 JSON 插入 MySQ 的线程,但我无法让它工作。我正在尝试使用从 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());
}

?>

【问题讨论】:

    标签: php mysql json youtube youtube-data-api


    【解决方案1】:

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

    【讨论】:

    • 是的,完成了这项工作,非常感谢。但是,我现在收到错误消息“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“歌曲标题”附近使用正确的语法。”有什么想法吗?
    • 尝试将插入行更改为:$sql = "INSERT INTO Table(title, description) VALUES('" . $title . "','" . $description . "')";
    • 另外,使用参数化语句(也就是准备好的语句)可能会更好。这将防止任何 SQL 注入风险(尽管在这种情况下不太可能),效率更高,还可以确保数据被正确转义等。
    • 再次感谢,我仍然收到与“SQL 语法”相同的错误。关于它可能是什么的任何其他想法?对于非常新手的问题,我们深表歉意。我会看看参数化语句。
    • 我猜想在某个标题或描述中的某处有'(引用),这会弄乱您的 SQL 语句。您可以转义变量,但参数化语句可能是一条更好的路线。
    猜你喜欢
    • 2015-08-23
    • 2016-10-04
    • 2017-11-29
    • 2015-10-26
    • 2014-03-01
    • 1970-01-01
    • 2014-01-06
    • 2016-08-27
    • 2021-08-10
    相关资源
    最近更新 更多