PHP exec在while循环中

问题描述:

我在执行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

您还没有调用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

其作品谢谢你 –