cURL和PHP显示“1” [英] cURL and PHP displaying "1"
问题描述
我有一个PHP脚本,我想从数据库读取服务器,并使用cURL连接到它们。服务器响应来自sql查询的结果。问题是每个服务器显示的数字1后的脚本。输出如下所示:
服务器1: >
1Server 2:一些结果
1Server 3:一些结果
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 =& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& ;;;;;;;;
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
(通过echo转换为 1
)。
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true);
I have a PHP script with which I want to read servers from database and connect to them with cURL. Servers responds with results from sql query. The problem is that script after each respond from server displays number 1. The ouput looks like this:
Server 1: some results
1Server 2: some results
1Server 3: some results
1
Here is the code that reads servers from database and connects to them:
<?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++;
}
?>
I discovered that 1 is displayed with "echo $result;" and the code for creating response is this:
<?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);
?>
Please help me
Use the CURLOPT_RETURNTRANSFER
option. Otherwise cURL will automatically echo the data and just return true
(which is converted to 1
by echo).
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
这篇关于cURL和PHP显示“1”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!