将PHP生成的JSON保存到文本文件中

时间:2012-04-18 15:03:41

标签: php jquery mysql json text

(这个问题是我之前修复的问题(Here)

我发现了一个类似的问题(Here),但解决方案并不是我想要的。

我目前在我的网站上有一个JQuery样式的自动完成搜索引擎,名为(fcbkcomplete)。脚本的原始操作从.txt文件运行,查找手动输入的值并在自动完成结果中输出。但是,我希望脚本从MYSQL数据库中获取值,而不是手动输入.txt文件,因为我最终希望用户可以选择添加自己的值。

因此,我使用此脚本将Javascript调用为.php文件而不是.txt:

//connection details

$getData = mysql_query("SELECT Name FROM tblIngredient"); 

 while($info = mysql_fetch_array($getData)) 
 {
     echo "{\"key: value:\";
     echo $info['Name'];
     echo "key: value:\"";
     echo $info['Name'];
     echo "}, ";
 }

此脚本以正确的格式运行并输出数据:

{"key": "vodka","value": "vodka"}, {"key": "tequila","value": "tequila"},

所以我需要知道如何将这个JSON输出转换为data.txt(这样当数据库表增长时,.txt文件会在脚本运行时自动更新)

这是我网站搜索的最后一步,所以非常感谢任何帮助。

-Matt

4 个答案:

答案 0 :(得分:2)

我无法确定你想要保存到这个txt文件的数据位,但我会假设它是这样的:

{"key": "vodka","value": "vodka"}, {"key": "tequila","value": "tequila"},

如果不是,你可以用它代替你想要的东西。

我认为您正在寻找的功能是fopen(),特别是使用'a'作为第二个参数。

从手册:

  

'a'仅限写作;将文件指针放在文件的末尾。   如果该文件不存在,请尝试创建它。

这是一个如何使用它的例子(非常简短)。

$string = '{"key": "vodka","value": "vodka"}, {"key": "tequila","value": "tequila"}';
$fp = fopen('somefile.txt', 'a');
fwrite($fp, $string);
fclose($fp);

这里要考虑的一件事(其中包括)是文件需要适当的写访问权限。

答案 1 :(得分:1)

不是将自动完成指向data.txt,为什么不将它指向PHP页面?

$("element").fcbkcomplete({
    ...
    json_url: "fetched.php",
    ...
});

答案 2 :(得分:1)

您可以结合使用ob_start& ob_get_contents然后将file_put_contents

放入文本文件中
<?php
$getData = mysql_query("SELECT Name FROM tblIngredient");
ob_start();
while($info = mysql_fetch_array($getData))
{
    echo "{\"key: value:\"";
    echo $info['Name'];
    echo "key: value:\"";
    echo $info['Name'];
    echo "}, ";
}
$return = ob_get_contents();
ob_end_clean();

file_put_contents('./data.txt',$return);
?>

或者如果你真的想要保存到文件的有效json那么你在数组上使用json_encode

<?php
$getData = mysql_query("SELECT Name FROM tblIngredient");

while($info = mysql_fetch_array($getData)){
    $result[]=$info['Name'];
}
file_put_contents('./data.txt',json_encode($result));
?>

答案 3 :(得分:0)

如果我很清楚你基本上想把这个输出写成一个txt文件,对吧? 在这种情况下,您不应使用echo函数,而应使用fopen和fwrite。看看这个TUTORIAL