php - Json跳过数组只插入需要的东西

标签 php mysql json mysqli insert

我有一个问题,你可以在 json 数据中看到我有 3 个数组,其中 2 个 "kind": "youtube#video", 和一个 "kind": "youtube#playlist",php 代码从 json 插入数据并且工作完美但是在 json "kind": "youtube#playlist", 他目前不工作,我只需要从#video 插入请帮助我尝试修复它一整天。如何使用播放列表跳过数组?仅从#video 数组中选择信息,跳过其他数组,仅从“kind”:“youtube#video”,数组中获取信息。

Error when #playlist in json

Notice: Undefined index: videoId in D:\xampp\htdocs\test\index.php on line 62

62LINE: $videos[$key] = $items['id']['videoId'];

代码:

$loop = mysqli_query($conn, "SELECT channelid FROM users ORDER BY id")
    or die (mysqli_error($conn));

    while ($row = mysqli_fetch_array($loop))
    {
        $channelid = $row['channelid'];
                    $content = file_get_contents($url); 
        $json = json_decode($content, true);    

        if(!isset($json['items'])) continue; //skip if no items

        $videos = ['videoId'=>'','videoId1'=>'','videoId2'=>'','videoId3'=>'','videoId4'=>''];
        $videossw = ['vidname'=>'','vidname1'=>'','vidname2'=>'','vidname3'=>'','vidname4'=>''];
        $videoss = ['publishedAt'=>'','publishedAt1'=>''];
    
        $i = 0;
        //if(isset($videoList[$i]["id"]["videoId"])) {
        foreach($json['items'] as $items)
        {
            $keyy  = 0==$i ? 'publishedAt' : 'publishedAt'.$i;
            $videoss[$keyy] = $items['snippet']['publishedAt'];
            
            $keyyy  = 0==$i ? 'vidname' : 'vidname'.$i;
            $videossw[$keyyy] = $items['snippet']['title']; 

            $key  = 0==$i ? 'videoId' : 'videoId'.$i;
            $videos[$key] = $items['id']['videoId']; 
            ++$i;
        }
        $qqq = 'INSERT INTO users(channelid, publishedAt, publishedAt1, videoId, videoId1, videoId2, videoId3, videoId4, vidname, vidname1, vidname2, vidname3, vidname4) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE channelid=?, publishedAt=?, publishedAt1=?, videoId=?, videoId1=?, videoId2=?, videoId3=?, videoId4=?, vidname=?, vidname1=?, vidname2=?, vidname3=?, vidname4=?';
        $stmt = $conn->prepare($qqq);
        $stmt->bind_param('ssssssssssssssssssssssssss', $channelid, $videoss['publishedAt'], $videoss['publishedAt1'], $videos['videoId'], $videos['videoId1'], $videos['videoId2'], $videos['videoId3'], $videos['videoId4'], $videossw['vidname'], $videossw['vidname1'], $videossw['vidname2'], $videossw['vidname3'], $videossw['vidname4'], $channelid, $videoss['publishedAt'], $videoss['publishedAt1'], $videos['videoId'], $videos['videoId1'], $videos['videoId2'], $videos['videoId3'], $videos['videoId4'], $videossw['vidname'], $videossw['vidname1'], $videossw['vidname2'], $videossw['vidname3'], $videossw['vidname4']);
        
        $stmt->execute();

        
    }

最佳答案

紧接着写一个条件

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

这会取消数据的资格。

if ($items['id']['kind'] != 'youtube#playlist') {

实现:

foreach ($json['items'] as $i => $items) {
    if ($items['id']['kind'] != 'youtube#playlist') {
        $keyy = !$i ? 'publishedAt' : "publishedAt$i";
        $videoss[$keyy] = $items['snippet']['publishedAt'];

        $keyyy = !$i ? 'vidname' : "vidname$i";
        $videossw[$keyyy] = $items['snippet']['title']; 

        $key = !$i ? 'videoId' : "videoId$i";
        $videos[$key] = $items['id']['videoId']; 
    }
}

关于php - Json跳过数组只插入需要的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52797742/

相关文章:

javascript - Angularjs JSON Unicode 字符

json - 如何在 Swift 中对 Codables 字典进行编码?

php - pdflib-sh : phpize: command not found

php - MySQL/PHP 批量删除使用数组 : Best method?

php - 如何只读取文本文件的一部分?

MySQL - WHERE 和 GROUP BY 语句冲突

javascript - 如何访问嵌套文档中的某个字段

php - 出于调试目的远程激活时查看 php 的打印和回显命令

mysql - 为自动递增字段设置起始值的存储过程

php - 如何管理查询?