2012-06-06 73 views
16

Tôi có một tập lệnh PHP mà tôi muốn đọc các máy chủ từ cơ sở dữ liệu và kết nối chúng với cURL. Máy chủ phản hồi với kết quả từ truy vấn sql. Vấn đề là kịch bản mà sau mỗi lần phản ứng từ màn hình máy chủ số 1. ouput trông như thế này:cURL và PHP hiển thị "1"

Server 1: một số kết quả

1Server 2: một số kết quả

1Server 3: một số kết quả

đây là mã mà đọc các máy chủ từ cơ sở dữ liệu và kết nối với họ:

<?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++; 
} 

?> 

Tôi phát hiện thấy 1 được hiển thị với "echo $ result;" và mã để tạo phản ứng là:

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

Xin hãy giúp tôi

Trả lời

47

Sử dụng tùy chọn CURLOPT_RETURNTRANSFER. Nếu không, cURL sẽ tự động lặp lại dữ liệu và chỉ trả lại true (được chuyển đổi thành 1 theo tiếng vọng).

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
7

Bạn cần phải sử dụng CURLOPT_RETURNTRANSFE hoặc curl_exec lợi nhuận một statusCode và gửi đáp ứng với stdout:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
0

Sử dụng CURLOPT_RETURNTRANSFE tùy chọn khác nó sẽ trả về một statusCode và gửi đáp ứng với stdout:

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, đúng);

1

CURLOPT_RETURNTRANSFER shoud được TRUE để trở việc chuyển giao như là một chuỗi giá trị trở lại của curl_exec() thay vì xuất ra nó ra directly.read đầy đủ tài liệu php.net

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

hoặc bạn có thể làm

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
Các vấn đề liên quan