我正在编写一个通过XML API发送短信的程序。我需要在单个XML Post中向多个号码发送相同的消息以及向不同的号码发送不同的消息。我的脚本是使用相同的消息将短信发送到多个号码,但无法添加不同的消息。
我的表格如下:
的MySQL>从obox中选择*;
+----+-------+--------+------------+----------+-----+------------+----------+--------+-------+
| id | sid | sender | pick_time | del_time | ref | pno | msg | report | route |
+----+-------+--------+------------+----------+-----+------------+----------+--------+-------+
| 1 | 10000 | ALERTS | 1414478267 | 9 | 0 | 9XXXXXXXX | test sms | | 29 |
| 2 | 10000 | ALERTS | 1414478267 | 9 | 0 | 8XXXXXXXX | tesr sms | | 29 |
| 3 | 10000 | ALERTS | 1414478267 | 9 | 0 | 7XXXXXXXX | tesr sms | | 29 |
+----+-------+--------+------------+----------+-----+------------+----------+--------+-------+
我的剧本:
//geting msg
$content=mysql_query("select msg from obox where pick_time < '$t' and del_time < 100 group by msg", $db) or die(mysql_error());
//getting msg count
$num= mysql_num_rows($content);
//getting loop for each msg type
for($ctr=0; $ctr < $num; $ctr++){
$inctr=1;
while($row=mysql_fetch_row($content)){
$msg=$row[$ctr];
$xml_data ='<MESSAGE VER="1.2">'.
'<USER USERNAME="xxxxx" PASSWORD="xxxxx" DLR="0"/>';
//For each msg, get sender & pno
$result = mysql_query("select pno, sender from obox where msg='$msg' and pick_time < '$t' and del_time < 100", $db) or die(mysql_error());
$xml_data .= "<SMS TEXT='$msg' ID='$inctr'>";
$i= 1;
while($row1= mysql_fetch_row($result)){
$pno=$row1[0];
$sender=$row1[1];
$xml_data .= "<ADDRESS FROM='$sender' TO='91$pno' SEQ='$i'/>";
$i++;
}
$xml_data .= "</SMS>";
// geting msg查询输出
的MySQL&GT;从obox中选择msg,其中pick_time&lt; '1414748869'和del_time&lt; 100组由msg
+----------+
| msg |
+----------+
| tesr sms |
| test sms |
+----------+
//脚本输出
<MESSAGE VER="1.2"><USER USERNAME="xxxx" PASSWORD="xxxx" DLR="0"/>
<SMS TEXT='test sms' ID='1'>
<ADDRESS FROM='ALERTS' TO='919xxxxxxxxx' SEQ='1'/></SMS>
</MESSAGE>
//输出应该是
<MESSAGE VER="1.2"><USER USERNAME="xxxx" PASSWORD="xxxx" DLR="0"/>
<SMS TEXT='test sms' ID='1'>
<ADDRESS FROM='ALERTS' TO='919xxxxxxxxx' SEQ='1'/>
</SMS>
<SMS TEXT='tesr sms' ID='2'>
<ADDRESS FROM='ALERTS' TO='918xxxxxxxxx' SEQ='1'/>
<ADDRESS FROM='ALERTS' TO='917xxxxxxxxx' SEQ='2'/>
</SMS>
</MESSAGE>
请帮助。在此先感谢。
此致
PB
答案 0 :(得分:2)
您的查询中限制为1。删除它。
$content=mysql_query("select msg from obox where pick_time < '$t' and del_time < 100 group by msg", $db) or die(mysql_error());
修改强>
当第二个循环上的$ ctr = 1时,你试图访问$ row [1],它应该只是$ row [0];改变
$msg=$row[$ctr];
到
$msg=$row[0];
并在需要时删除for循环。
<强> EDIT2 强>
您的$ xml_data正在此行上被覆盖。
$xml_data ='<MESSAGE VER="1.2">'.
'<USER USERNAME="xxxxx" PASSWORD="xxxxx" DLR="0"/>';
我会在第一个while循环之前初始化它,并在
之后连接到它$xml_data ='';
while($row=mysql_fetch_row($content)){
.
.
.
$xml_data .='<MESSAGE VER="1.2">'.
'<USER USERNAME="xxxxx" PASSWORD="xxxxx" DLR="0"/>';