简体   繁体   English

使用php在MySQL中保存json数据

[英]Save json data in MySQL using php

I want to save my following data into MySQL Database. 我想将以下数据保存到MySQL数据库中。

following code is showing me two warnings 以下代码向我显示了两个警告

1- Illegal string offset. 1-非法的字符串偏移量。

2- Only variables can be passed by reference in. 2-只有变量可以通过引用传入。

Please help. 请帮忙。

$db = new PDO('mysql:host=localhost;dbname=whois;charset=utf8mb4', 'root', '');
$items = array(
        'Domain Name:' => 'domain.name',
        'Domain ID:' => 'domain.handle',
        'Sponsoring Registrar:' => 'domain.sponsor',
        'Registrar ID:' => 'domain.sponsor',
        'Domain Status:' => 'domain.status.',
        'Status:' => 'domain.status.',
        'Name Server:' => 'domain.nserver.',
        'Nameservers:' => 'domain.nserver.',
        'Maintainer:' => 'domain.referer',
);

$stmt = $db->prepare("INSERT INTO temdata VALUES(?,?,?,?,?,?,?,?,?)");

foreach ($items as $row) {

    $stmt->bindParam(1, $row['domainname']);
    $stmt->bindParam(2, $row['domainid']);
    $stmt->bindParam(3, $row['registrar']);
    $stmt->bindParam(4, $row['registrarid']);
    $stmt->bindParam(5, $row['domainstatus']);
    $stmt->bindParam(6, $row['status']);
    $stmt->bindParam(7, $row['server']);
    $stmt->bindParam(8, $row['nameservers']);
    $stmt->bindParam(9, $row['maintainer']);
    $stmt->execute();
}

I think this will work, but I personally would want something more robust before I released it. 我认为这可以解决问题,但是我个人希望在发布之前要更强大。

$items = array(
        'Domain Name:' => 'domain.name',
        'Domain ID:' => 'domain.handle',
        'Sponsoring Registrar:' => 'domain.sponsor',
        'Registrar ID:' => 'domain.sponsor',
        'Domain Status:' => 'domain.status.',
        'Status:' => 'domain.status.',
        'Name Server:' => 'domain.nserver.',
        'Nameservers:' => 'domain.nserver.',
        'Maintainer:' => 'domain.referer',
);

$stmt = $db->prepare("INSERT INTO temdata VALUES(?,?,?,?,?,?,?,?,?)");
$col=1;
foreach ($items as $item) {
    $stmt->bindParam($col, $item);
    $col++;
}
$stmt->execute();

First of all remove trailing dot (.) from array values 首先从数组值中删除结尾的点(。)

$items = array(
    'Domain Name:' => 'domain.name',
    'Domain ID:' => 'domain.handle',
    'Sponsoring Registrar:' => 'domain.sponsor',
    'Registrar ID:' => 'domain.sponsor',
    'Domain Status:' => 'domain.status',
    'Status:' => 'domain.status',
    'Name Server:' => 'domain.nserver',
    'Nameservers:' => 'domain.nserver',
    'Maintainer:' => 'domain.referer',
);
$stmt = $db->prepare("INSERT INTO temdata VALUES(?,?,?,?,?,?,?,?,?)");

$i = 1;
foreach ($items as $row) {
    $stmt->bindParam($i, $row);
    $i++;
}

$stmt->execute();
`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM