循环来自多个变量的查询?

时间:2011-04-16 21:05:54

标签: php mysql

我正在重写我的简报邮件,以限制发送到某些域名。基本上订阅者以mailer_lists以另一种形式保存,然后他们被分配邮件ip以使用该邮件ip对指定域的限制。下面的代码是我试图收集这些信息。

我要做的是为查询匹配提取记录,循环遍历$node_ip$throttle_domain$throttle_speed,然后在达到全局限制时停止提取记录,然后发送。我无法让它正常工作..

function queue(){
$query = "SELECT * FROM `mailer_lists` WHERE `ip` = '$node_ip' AND `email` LIKE '%".$throttle_domain."' LIMIT ".$throttle_speed."" ;
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);
$count = $num_rows;
}
if ($count < $global){
queue();
}else{
mail();


希望我有一半的技能。期待任何想法..

3 个答案:

答案 0 :(得分:1)

让你的函数返回行数,如下所示:

function queue(){
$query = "SELECT * FROM `mailer_lists` WHERE `ip` = '$node_ip' AND `email` LIKE '%".$throttle_domain."' LIMIT ".$throttle_speed."" ;
$result = mysql_query($query) or die(mysql_error());
return mysql_num_rows($result);
}

不,你可以创造条件:

if (queue() < $global){
queue();
}else{
mail();

答案 1 :(得分:0)

函数中的计数未标记为全局,因此未更新。将全局$ count添加为队列函数的第一行。

另一个问题是,当计数永远不会到达全局变量时,它永远不会邮寄。所以最后一批不会被发送。

答案 2 :(得分:0)

我真的不知道这是否会起作用:D

<?php

function queue($ptr, $glbl){
/* each time we increment our range by $glbl */
$newPtr = $ptr + 100;
/* we use limit keyword to only fetch 100 rows each time */
$query = "SELECT * FROM `mailer_lists` WHERE `ip` = '$node_ip' LIMIT '$ptr', '$newPtr'" ;
$result = mysql_query($query) or die(mysql_error());
/* fetch the rows and send to theme an email */
while($row = mysql_fetch_row($result))
 {
    mail(mail($row['email'], $subject, $message));
 }

}
/* here we use a static variable to track where we are we in the range */
static $next = 0;
$i = 0;
/* sending emails*/
queue($next, $glbl);
/* put pur next beginning range in 
$next ant it will end with $next + $glbl as it in line 5 */
$next += $glbl;
?>