mysql_fetch_row while while循环没有得到所有行

时间:2014-10-31 14:01:29

标签: php

我正在编写一个通过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

1 个答案:

答案 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"/>';