php - 从json文件添加到mysql db数据

标签 php mysql json

代码有问题吗? 它不是将数据插入数据库,我不知道出了什么问题。 有人可以帮帮我吗?

这是php代码

<?php

include 'config.php';

$data = file_get_contents('programs.json');
$json = json_decode($data, TRUE);
if ($data != '' && count($json) > 0) {
    $sql = "SELECT pid FROM programs";
    $result = mysqli_query($conn, $sql);
    $transArr = array();
    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_assoc($result)) {
            $transArr[] = $row["pid"];
        }
    }
    $bulk_query = '';
    $bulk_update_query = '';
    $pid = '';
    $pname = '';
    $start_date = '';
    $end_date = '';
    $logo = '';
    $short_description = '';
    $description = '';
    $ended_date = '';
    $url = '';
    $program_status = '';
    $summary = '';
    $categories = '';
    foreach ($json as $key => $jsonRow) {
        
       
        $pid = isset($jsonRow['id']) ? $jsonRow['id'] : '';
        $pname = isset($jsonRow['name']) ? $jsonRow['name'] : '';
        $start_date = isset($jsonRow['start_date']) ? $jsonRow['start_date'] : '';
        $end_date = isset($jsonRow['end_date']) ? $jsonRow['end_date'] : '';
        $logo = isset($jsonRow['logo']) ? $jsonRow['logo'] : '';
        $short_description = isset($jsonRow['short_description']) ? $jsonRow['short_description'] : '';
        $description = isset($jsonRow['description']) ? $jsonRow['description'] : '';
        $ended_date = isset($jsonRow['ended_date']) ? $jsonRow['ended_date'] : '';
        $url = isset($jsonRow['url']) ? $jsonRow['url'] : '';
        $program_status = isset($jsonRow['program_status']) ? $jsonRow['program_status'] : '';
        $summary = isset($jsonRow['summary']) ? floatval($jsonRow['summary'])  : '';
        $categories = isset($jsonRow['parent_category']['name']) ? $jsonRow['parent_category']['name'] : '';
        

        if (!in_array($pid, $transArr)) {
            $bulk_query.="('$pid','$pname','$start_date','$end_date','$logo','$short_description','$description',$ended_date,$url,'$program_status','$summary','$categories'),";
        } else {
            $sql = "UPDATE programs SET pid='$pid',name='$pname',start_date='$start_date',end_date='$end_date',"
                    . "logo='$logo',short_description='$short_description',description='$description',ended_date=$ended_date,url=$url,"
                    . "program_status='$program_status',summary='$summary',categories='$categories' WHERE pid=$pid";
            mysqli_query($conn, $sql);
        }
    }
    $bulk_query = rtrim($bulk_query, ",");
    $sql = "INSERT INTO programs (pid,pname,start_date,end_date,logo,short_description,description,ended_date,url,program_status,summary,categories) VALUES $bulk_query";
    $conn->query($sql);
    createFileBackup();
    echo ' Record Added';
}

?>

我正在尝试插入到 db 的 json 数据

[
    {
        "id": 12356,
        "name": "test",
        "start_date": "2017-06-14T21:00:00+00:00",
        "end_date": null,
        "logo": "test.png",
        "short_description": "test short_description",
        "description": "test description",
        "ended_date": null,
        "url": "http://www.test.com/",
        "program_status": "Active",
        "commissions": {
            "details": [
                {
                    "category": {
                        "id": 1,
                        "name": "Sales",
                        "cookie_length": 30,
                        "type": "sale",
                        "payout_type": "percent",
                        "tiers": [
                            {
                                "tier": {
                                    "level": 1,
                                    "action": "12.00",
                                    "subaction": "12.00",
                                    "formatted": {
                                        "action": "12,00%",
                                        "subaction": "12,00%"
                                    }
                                }
                            }
                        ]
                    }
                }
            ],
            "summary": {
                "percent": "12,00%",
                "flat": "-"
            },
            "tiers": {
                "count_type": "clicks",
                "amount": 1,
                "levels": []
            }
        },
        "categories": [
            {
                "parent_category": {
                    "name": "test",
                    "child_categories": [
                        {
                            "child_category": {
                                "name": "test2"
                            }
                        }
                    ]
                }
            }
        ]
    },
    {
        "id": 123456,
        "name": "test",
        "start_date": "2017-06-14T21:00:00+00:00",
        "end_date": null,
        "logo": "test.png",
        "short_description": "test short_description",
        "description": "test description",
        "ended_date": null,
        "url": "http://www.test.com/",
        "program_status": "Active",
        "commissions": {
            "details": [
                {
                    "category": {
                        "id": 1,
                        "name": "Sales",
                        "cookie_length": 30,
                        "type": "sale",
                        "payout_type": "percent",
                        "tiers": [
                            {
                                "tier": {
                                    "level": 1,
                                    "action": "12.00",
                                    "subaction": "12.00",
                                    "formatted": {
                                        "action": "12,00%",
                                        "subaction": "12,00%"
                                    }
                                }
                            }
                        ]
                    }
                }
            ],
            "summary": {
                "percent": "12,00%",
                "flat": "-"
            },
            "tiers": {
                "count_type": "clicks",
                "amount": 1,
                "levels": []
            }
        },
        "categories": [
            {
                "parent_category": {
                    "name": "test",
                    "child_categories": [
                        {
                            "child_category": {
                                "name": "test2"
                            }
                        }
                    ]
                }
            }
        ]
    }
    ]

数据库结构是

enter image description here

最佳答案

我用 $new_name = str_replace("'", "''", "$pname"); 解决了这个问题我在网上找到的,现在我可以用撇号插入到数据库变量中。谢谢你的帮助

关于php - 从json文件添加到mysql db数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44563849/

相关文章:

php - 我的 friend 系统为每个用户更改 session

php - 解析 PHP 多维数组

php - 升级到 Mysql5 和 PHP 5.2 后 mysql_query 停止工作

php - "Trying to get property of non-object"sql错误

MySQL (0x80004005) 无法连接到任何指定的 MySQL 主机(在非开发计算机上)

javascript - 在每次迭代中附加到 dom 或创建一个数组并输出?

php - 从 Android 连接到 mySQL 数据库时出错

php - Laravel 标签带有 和 查询

MySQL数据库数据类型

javascript - 在Javascript中获取JSON的内部数组值