【问题标题】:Json to Mysql DatabaseJson 到 Mysql 数据库
【发布时间】:2015-01-05 14:39:06
【问题描述】:

我正在尝试解析 json 文件并将字段推送到数据库 jSON 源:http://graph.facebook.com/10153575791993298/

解析和回显

<?php
    $json_file = file_get_contents('http://graph.facebook.com/10153575791993298/');
    $info = json_decode($json_file);

    if ($info) {
         foreach ($info->likes->data as $obj){
            echo $obj->id, "<br/>";
            echo $obj->name, "<br/>";
         }
    }
?>

数据库部分:

<?php
    // Create connection
    $mysqli = new mysqli('localhost', 'root', 'root', 'facebook');
    $query = <<<SQL
    INSERT INTO Likes ('ID', 'Name')
    VALUES (?, ?)
    SQL;
    $stmt = $mysqli->prepare($query);
    foreach ($info['data'] as $key => $value) {
        $stmt->bind_param(
            // the types of the data we are about to insert: s = string, i = int
            'ss', 
            $value['id'],
            $value['name'],
        );
        $stmt->execute();
    }
    $stmt->close();
    $mysqli->close();
?>

我正确设置了我的表,但我不知道为什么我不能将数据推送到我的数据库。 我想检索数据并推送到我的数据库的 Json 部分 http://graph.facebook.com/10153575791993298/likes

【问题讨论】:

  • 第一个代码块有解析错误,但我不知道这是否只是复制粘贴错误。请调试您的代码并提供准确的错误消息。
  • 结束的 heredoc 分隔符周围不应有任何空格。正如埃隆所说;这将导致解析错误。这里php.net/manual/en/function.error-reporting.php 会告诉你。另外,('ID', 'Name') 中的引号是列,而不是字符串值,因此请删除它们。我很想把这个作为答案。
  • $data['data'];这个变量是从哪里来的?
  • 修复解析它是一个复制/粘贴错误thx寻求帮助
  • 马克在下面给了你答案。

标签: php mysql json facebook


【解决方案1】:

MySQL 语法 101:' 将事物转换为字符串:

INSERT INTO Likes ('ID', 'Name')
                   ^--^--^----^---

您没有插入到名为 ID 的字段中。您传入了一个 STRING,这是非法的语法。一旦某个东西是一个字符串,它就不会被数据库解释为一个字段/表标识符。

应该只是

INSERT INTO Likes (ID, Name)

因为您的字段名都不是保留字。如果您坚持引用事物,请使用反引号引用字段/表名称:

INSERT INTO Likes (`ID`, `Name`)

【讨论】:

  • 如果 OP 发布的代码实际上是他们正在使用的代码怎么办。如果是这样的话,你已经错过了关于heredoc 的事实。只是说。
  • 也许是这样,但如果额外的缩进不仅仅是复制/粘贴工件,那么脚本本身就会因意外的 EOF 而死,因为heredoc 永远不会终止。
  • 是的。但是,您和我一样都知道,大多数发帖的人几乎不检查错误;-) 编辑:这是一个粘贴错误。 OP只是这么说(不是总是这样吗?)。 继续我任性的儿子 ;-)
【解决方案2】:

您在插入查询中使用了引号INSERT INTO Likes ('ID', Name') 正确的语法是

INSERT INTO Likes (ID, Name)

【讨论】:

  • 感谢帮助,我想我在这里犯了一个错误:foreach ($data['data'] as $key =&gt; $value)
  • 如果你目前的项目好运的话。
猜你喜欢
  • 2016-02-21
  • 2016-07-29
  • 2017-07-14
  • 2011-10-14
  • 2023-03-05
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多