cURL和PHP显示“1” [英] cURL and PHP displaying "1"

查看:93
本文介绍了cURL和PHP显示“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 = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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);
?>

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆