首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在while循环中调用PHP函数

问在while循环中调用PHP函数
EN

Stack Overflow用户
提问于 2015-05-14 19:43:05
回答 1查看 3.4K关注 0票数 2

我有一个函数,它从满足特定WHERE条件的表中获取一组特定的用户。

我要给他们每个人发个口信。

所以,我使用了另一个函数来发送消息。并在其中调用该函数,并跟踪while循环。

代码语言:javascript
复制
while($user= mysqli_fetch_assoc($users_set)){
   send_message($user['email']);
}

所以问题是,这个函数只被调用了一次。(只使用循环的最后一个值)

如何解决这个问题,并使函数调用与每个值的循环.

这是完整的密码。

代码语言:javascript
复制
$query = "SELECT * ";
$query .= "FROM user ";
$query .= "WHERE confirmed = 0";

$user_set = mysqli_query($db_conx, $query);
confirm_query($user_set);

while($user = mysqli_fetch_assoc($user_set)){
   send_message($user['email']);
}

这是发送消息的函数..。

代码语言:javascript
复制
function send_message($email){
global $db_conx;

$invitee_user = get_user_by_email($email);

$query5 = "INSERT INTO notification(";
$query5 .= "description, user_id";
$query5 .= ") VALUES(";
$query5 .= "'You have been confirmed'";
$query5 .= ", {$invitee_user['id']}";
$query5 .= ")";

$result5 = mysqli_query($db_conx, $query5);

if($result5){
    //$_SESSION["message"] = "Notification sent". \mysqli_error($db_conx);
    return "OK";
}else{
    //$_SESSION["message"] = "Failed to send notification". mysqli_error($db_conx);
}

}

以下是confirm_query()的代码

代码语言:javascript
复制
function confirm_query($result_set){
if(!$result_set){
   die("Fatal Error Occured : Database Query Failed <a href=\"error-report.php\">Report this error</a>"); 
}

}

EN

回答 1

Stack Overflow用户

发布于 2015-05-14 20:05:48

我只想把它归结为一个查询,然后去掉所有循环的东西。

代码语言:javascript
复制
INSERT INTO notification (description, user_id)
SELECT 'You have been confirmed', user_id
FROM user
WHERE confirmed = 0

你目前的逻辑很复杂。

您查询user表以获取用户电子邮件字段,然后将该电子邮件作为参数传递给您的函数,然后转身,然后(我猜)根据电子邮件查找用户ID (当您已经从初始查询中获得此信息时),然后进行插入。

这意味着,对于从第一个查询返回的每条记录,都需要执行两个查询才能插入通知表。因此,如果您有100个结果,那么总共至少要执行201次查询来完成插入操作。

使用我的方法,您可以进行1次查询,而不管有多少行受到影响。

您应该从中得到的一个好处是,每当您看到自己试图进行某种嵌套查询时,就应该将其识别为反模式(通常不想使用的编码模式)。如果您重新思考如何编写查询,通常可以采用更好的方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30245972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档