2013-04-05 3 views
0

У меня есть несколько XML_PAYLOAD для публикации (разные сообщения xml для каждого цикла while). Когда я запускаю цикл, он будет только POST данными первого цикла $i. Как я могу получить его до POST новых данных для каждого цикла $i?PHP Multi XML POST с циклом с использованием CURL

$i = 0; 
while ($i < $num) { 

...data 

define("XML_PAYLOAD", "<?xml stuff and tags?>"); 
define("XML_POST_URL", "http://theurl"); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, XML_POST_URL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_POSTFIELDS, XML_PAYLOAD); 

$result = curl_exec($ch); 
curl_close($ch); 

$i++; 
} 
+0

Он должен быть там, потому что он должен иметь разные данные, которые он извлекает из цикла. – ToddN

+0

На первый взгляд использование определений будет проблемой. Один раз вы можете определить константу. Поэтому, если ваши данные полезны в каждом цикле, вы не сможете переопределить XML_PAYLOAD и XML_POST_URL, поэтому вы отправите одно и то же число $ num. – EmmanuelG

+0

, конечно, это имеет смысл благодаря настоящему времени. – ToddN

ответ

1

define определяет константу. Это означает, что он не может измениться после его установки. Вы должны использовать такие переменные:

define("XML_POST_URL", "http://theurl"); 
$i = 0; 
while ($i < $num) { 

...data 

$xml_payload = "<?xml stuff and tags?>"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, XML_POST_URL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_setopt($ch, CURLOPT_POSTFIELDS, XML_PAYLOAD); 

$result = curl_exec($ch); 
curl_close($ch); 

$i++; 
} 
+0

Очень просто и легко упускать из виду, спасибо, что это решило! – ToddN

Смежные вопросы