2012-06-06 13 views
16

मेरे पास एक PHP स्क्रिप्ट है जिसके साथ मैं डेटाबेस से सर्वर पढ़ना चाहता हूं और उन्हें curl से कनेक्ट करना चाहता हूं। सर्वर एसक्यूएल क्वेरी से परिणामों के साथ प्रतिक्रिया करता है। समस्या प्रत्येक सर्वर से रुझान प्रतिक्रिया देने के बाद कि स्क्रिप्ट है नंबर 1. ouput इस तरह दिखता है:curl और PHP प्रदर्शित "1"

सर्वर 1: कुछ परिणाम

1Server 2: कुछ परिणाम

1Server 3: कुछ परिणाम

यहाँ कोड है कि डेटाबेस से सर्वर पढ़ता है और उन्हें आपस में जोड़ता है:

<?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 $ परिणाम" के साथ प्रदर्शित होता है; और प्रतिक्रिया बनाने के लिए कोड यह है:

<?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); 
?> 

कृपया मेरी मदद करो

उत्तर

47

CURLOPT_RETURNTRANSFER विकल्प का उपयोग करें। अन्यथा curl स्वचालित रूप से डेटा को प्रतिबिंबित करेगा और केवल true लौटाएगा (जिसे प्रतिध्वनि द्वारा 1 में परिवर्तित किया गया है)।

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
7

आप CURLOPT_RETURNTRANSFE या curl_exec रिटर्न एक statusCode उपयोग करने की आवश्यकता और stdout के जवाब भेजता है:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
0

उपयोग CURLOPT_RETURNTRANSFE वरना यह एक statusCode लौट सकते हैं और stdout के लिए प्रतिक्रिया भेजता होगा विकल्प:

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true);

1

CURLOPT_RETURNTRANSFER यह directly.read पूर्ण प्रलेखन php.net

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

बाहर outputting की curl_exec() की वापसी मूल्य का एक स्ट्रिंग के रूप में स्थानांतरण वापस जाने के लिए बजाय सही हो shoud या आप कर सकते हैं

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);