@Angelxalfa

Возврат данных cURL в виде массива?

Здравствуйте!
Есть два скрипта, на разных серверах.
Скрипт1 посредством cURL отправляет post данные Скрипту2. Тот согласно этим данным получает данные из базы данных.
Как заставить его отправить полученные из БД данные Скрипт1 в виде массива, чтобы потом Скриптом1 ими можно было опреировать? Так как он передает их в виде строки. Или как потом полученную строку превратить в массив?
скрипт 1
if( $curl = curl_init() ) {
    curl_setopt($curl, CURLOPT_URL, 'http://11.11.11.11/table_query_order.php');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, "select=street&table=table&order=street");
    $out = curl_exec($curl);
    curl_close($curl);
  }
  echo $out;


Скрипт2
if (!$dbconn) {
			echo "Произошла ошибка подключения к базе.";
		}
		$prefix = 'kjhhl_';
		$select = $_POST['select'];
		$table = $_POST['table'];
		$order = $_POST['order'];
	$table_query = pg_query($dbconn, "select $select from ".$prefix."$table ORDER BY $order");
		if (!$table_query) {
		  echo "Произошла ошибка";
		}
			$arr = pg_fetch_all ($table_query);
	var_export($arr);

Результат:
array ( 0 => array ( 'street' => 'ул1', ), 1 => array ( 'street' => 'ул2', ), 2 => array ( 'street' => 'ул3', ), и так далее....
  • Вопрос задан
  • 1888 просмотров
Решения вопроса 1
qfox
@qfox
Ответы есть у меня
Вам нужна сериализация и десериализация данных.

Serialize+unserialize
json_encode+json_decode
etc.

Т.е., в скрипте 1 вместо `echo $out` вы делаете `json_decode($out);`.
А в скрипте 2 вместо `var_export($arr);` делаете `echo json_encode($arr);`.

Не забудьте завернуть сообщения об ошибках в скрипте 2 в такой же json, чтобы в скрипте 1 делать меньше телодвижений. Т.е. сделайте так, чтобы скрипт 2 всегда возвращал json.

Т.е., вместо:
if (!$dbconn) {
  echo "Произошла ошибка подключения к базе.";
}

Нужно
if (!$dbconn) {
  echo json_encode(["error" => "Произошла ошибка подключения к базе."]);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы