Помещение PHP-запроса MySQL в SSH - PullRequest
0 голосов
/ 16 сентября 2011

Моя программа первоначально называла запрос MySQL через http. Результат был возвращен в форме 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, и я думал о выполнении SQL-запроса через bash, а затем подумал, почему бы мне просто не позвонить скрипт PHP в SSH?

Однако я не уверен, как это сделать, учитывая, что PHP возвращает массив. Если бы он возвратил простой файл, я мог бы, теоретически, просто сделать:

spc username@hostname:filename  localfilename

Как мне вернуть массив из скрипта в SSH?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

1) Вы можете просто запустить PHP-скрипт на нужном сервере, если разрешите этому пользователю подключаться к MySQL с внешнего сервера. Таким образом, вам не нужно будет передавать файл или что-либо еще (видя, что вы написали «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;)

Надеюсь, это помогло вам;)

0 голосов
/ 16 сентября 2011

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 }
]

или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...