2013-07-11 127 views
1

我在執行exec函數時遇到問題while while循環
我想將xml文件傳輸到服務器問題是傳輸到服務器成功 但數據xml完全相同,數據仍然是第一個XML數據
是否exec的行爲是不能在運行的條件?或者在下一次運行之前我必須清除一些東西?PHP exec在while循環中

mysql_connect("someaddress","root","somepass"); 
mysql_select_db("somedatabase"); 

    $t_data = mysql_query("SELECT * FROM inbox_hmis WHERE ordernumber = '01' AND status = 'false'"); 
    while($data = mysql_fetch_array($t_data)){ 

    $un_id_sms = $data['id_sms']; 
    echo "$un_id_sms"; 
     $xmlget = "/var/www/sms/basedata/$un_id_sms.xml"; 
         exec("curl -d @$xmlget http://apps.dhis2.org/demo/api/dataValueSets -H Content-Type:application/xml -u admin:password", $output); 
         $outx = $output[0]; 

     $outx_r = str_replace("'", '"', $outx); 

     echo "$outx_r | "; 
    } 

$un_ind_sms是唯一的ID和xml文件的名稱
$outx_r是XML數據

+3

爲什麼使用命令行curl而不是php curl庫? – 2013-07-11 03:38:51

+0

這是從我的客戶標準 –

+2

@OkiPrasastio,您的客戶是瘋了。 – Brad

回答

1

您還沒有調用exec之前重置變量$output的內容。例如。

unset($output); // as recomended in php docs 

在執行調用之前將解決您的問題。

正如exec文檔中所述,如果行數組已經包含數據,那麼新結果將被追加到它。

+0

是的。 [PHP文檔](http://www.php.net/manual/en/function.exec.php):「...請注意,如果數組已經包含一些元素,*** exec()***會追加到數組的末尾......「。 – Passerby

+0

也許是因爲$ output是行數組,你只輸出第一個。 $ outx = join(「\ n」,$ output)會輸出所有內容,也許輸出預期的內容? – bbonev

+0

其作品謝謝你 –