У меня есть PHP-скрипт, с которым я хочу читать серверы из базы данных и подключаться к ним с помощью cURL. Серверы отвечают результатами запроса sql. Проблема в том, что скрипт после каждого ответа с сервера отображает номер 1. Вывод выглядит следующим образом:
Сервер 1: некоторые результаты
1Server 2: некоторые результаты
1Сервер 3: некоторые результаты
- Самый быстрый способ Fire и забыть JSON POST в PHP
- поделиться одним и тем же файлом cookie между двумя веб-сайтами с помощью расширения PHP cURL
- API Basecamp с использованием cURL и PHP
- Как сделать асинхронный запрос GET в PHP?
- Ответ CURL отличается от ответа на запрос, отправленный из браузера
1
Вот код, который считывает серверы из базы данных и подключается к ним:
<?php $mysql_id = mysql_connect('localhost', 'ms', 'pass'); mysql_select_db('servers', $mysql_id); mysql_query("SET NAMES utf8"); $query = "SELECT * FROM svr"; $result = mysql_query($query); $num = mysql_num_rows($result); while ($data = mysql_fetch_assoc($result)) { $server[] = $data; } mysql_close($mysql_id); $i = 0; while($i < $num) { $dealer = $server[$i]['dealer']; echo $dealer . "<br />"; $data = "val=a"; //just for testing $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: text/html; charset=utf-8') ); $result = curl_exec($ch); echo $result; $i++; } ?>
Я обнаружил, что 1 отображается с «echo $ result»; и код для создания ответа следующий:
<?php $mysql_id1 = mysql_connect('localhost', 'ms', 'pass'); mysql_select_db('servers', $mysql_id1); mysql_query("SET NAMES utf8"); $query2 = "SELECT * FROM data"; $result2 = mysql_query($query2); $num2 = mysql_num_rows($result2); while ($data2 = mysql_fetch_assoc($result2)) { $deli[] = $data2; } $i1 = 0; $space = " "; while ($i1 < $num2) { echo $space . $deli[$i1]['id'] . " "; echo $deli[$i1]['artikel'] . " "; echo $deli[$i1]['znamka'] . " "; echo $deli[$i1]['model'] . " "; echo $deli[$i1]['letnik'] . " "; echo $deli[$i1]['cena'] . " € "; echo $deli[$i1]['zaloga'] . "<br />"; $i1++; } echo "<br />"; mysql_close($mysql_id1); ?>
пожалуйста, помогите мне
Используйте параметр CURLOPT_RETURNTRANSFER
. В противном случае cURL автоматически будет эхо-данные и просто вернет true
(который преобразуется в 1
помощью эха).
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
Вам нужно использовать CURLOPT_RETURNTRANSFE
или curl_exec
возвращает код состояния и отправляет ответ на stdout:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
CURLOPT_RETURNTRANSFER
shoud будет TRUE, чтобы вернуть передачу как строку возвращаемого значения curl_exec()
вместо вывода его непосредственно. Прочитайте полную документацию php.net
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
или вы можете сделать
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
Используйте параметр CURLOPT_RETURNTRANSFE, иначе он вернет код состояния и отправит ответ на stdout:
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);