我的程序最初通过http调用mySQL查询。结果以JSON格式返回:
$query = "SELECT xaxis, yaxis FROM table ";
$result = mysql_query($query);
$rows = array();
$counter=1;
while ($r = mysql_fetch_array($result, MYSQL_NUM))
{
echo json_encode($r[0]), "\n";
echo json_encode($r[1]), "\n";
$counter++;
}
?>
它工作正常(授予不是世界上最好的PHP脚本),但现在我正在用SSH做一切,我正在考虑通过bash进行SQL查询然后我想,为什么我不打电话SSH中的PHP脚本?
但是我不知道怎么做,因为PHP返回一个数组。如果它返回了一个简单的文件,理论上就是这样做:
spc username@hostname:filename localfilename
我应该如何从SSH中的脚本返回数组?
答案 0 :(得分:0)
PHP不返回数组。它返回一个JSON格式的字符串:记住,HTTP只能给你文本。
所以没有区别。只需在终端中调用PHP脚本,您就会看到相同的文本。
(实际上,看起来你有两个不同的JSON结构,用换行符分隔。你可能希望通过编码$r
来解决这个问题:)
[user@host: ~]$ cat myscript.php
<?php
$query = "SELECT `xaxis`, `yaxis` FROM `table`";
$result = mysql_query($query);
$rows = Array();
while ($r = mysql_fetch_assoc($result)) {
$rows[] = $r;
}
echo json_encode($rows);
?>
[user@host: ~]$ php myscript.php
[
{ "xaxis" : 0, "yaxis" : 0 },
{ "xaxis" : 3, "yaxis" : 2 },
{ "xaxis" : 8, "yaxis" : 5 }
]
或类似的东西。
答案 1 :(得分:0)
1)如果允许该用户从外部服务器连接到MySQL,您可以在所需的服务器上运行PHP脚本。这样你就不必转移文件或任何东西(看到你写的“spc”,而我猜它被认为是“scp”。
2)如果您希望输出单个数组,请将while循环更新为以下代码:
$output = array();
while ($r = mysql_fetch_array($result, MYSQL_NUM))
{
$output[] = $r;
$counter++; //Im guessing you need this :P
}
echo json_encode($output);
可以从任何地方调用此脚本,但如果要从SSH运行它,只需运行以下命令*:
php yourfile.php
*确保安装了php-cli;)
希望这能帮到你;)