将Mysql数据插入Json文件并不起作用

时间:2014-09-10 07:44:03

标签: php mysql json insert

我有一个不起作用的脚本我希望你的一些开发人员知道解决方案。

<?php
    //Create Database connection
    $db = mysql_connect("localhost","d","d");
    if (!$db) {
        die('Could not connect to db: ' . mysql_error());
    }

    //Select the Database
    mysql_select_db("d",$db);

    //Replace * in the query with the column names.
    $result = mysql_query("select * from events", $db);  

    //Create an array
    $json_response = array();

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $row_array['id'] = $row['id'];
        $row_array['title'] = $row['title'];
        $row_array['start'] = $row['start'];
        $row_array['end'] = $row['end'];

        //push the values in the array
        array_push($json_response,$row_array);
    }
    echo json_encode($json_response);

    $file = 'events.json';
    // Open the file to get existing content
    $current = file_get_contents($file);
    // Append a new person to the file
    // Write the contents back to the file
    file_put_contents($file, $json_response);
    //Close the database connection

?>

但是events.json是空的?有谁知道解决方案?

4 个答案:

答案 0 :(得分:0)

使用它:

$json_response = json_encode($json_response);

答案 1 :(得分:0)

首先,

echo json_encode($json_response);
file_put_contents($file, $json_response);

这不是写json你应该这样做

file_put_contents($file, json_encode($json_response));

也许是问题所在,你无法将数组写入文件。

第二,你错过了一些代码吗?

$current = file_get_contents($file);
    // Append a new person to the file

我们没有看到要附加的代码,您的代码只是用数组$ json_response替换内容(而不是json编码的数组)。

答案 2 :(得分:0)

您尚未将json编码的响应存储在任何位置。在echo语句下方,添加以下行:

$json_response = json_encode($json_response);

答案 3 :(得分:0)

您写道:// Append a new person to the file但永远不会追加,而是替换文件的内容 当您致电file_put_contents($file, $json_response);时,您还没有将$json_response变成json字符串。

尝试更改:

echo json_encode($json_response);

要:

$json_response = json_encode($json_response);

将数据正确转换为json-string。

要将数据附加到文件(现在我将假设文件包含与您尝试编写的数据格式相同的数据),请像使用file_get_contents一样加载它,然后转换内容为关联数组:json_decode($dataFromFile, true);true标志作为第二个参数使返回值成为关联数组而不是对象)并合并这两个列表,然后再将其写入文件。 / p>