所以我有一个 while 循环,
它为用户生成所有收件箱消息,然后在那个 while 循环中,我有一个查询和另一个 while 循环,生成该消息的所有收件人。我正在尝试从 while 循环内部构建一个数组,该数组将回显每个消息线程的所有收件人/参与者。照原样,当我var_dump我的用户名数组时,它被构建为包含所有消息的所有收件人(到最后一次回显时(。那么,我将如何使这个数组对每一行都是唯一的呢?我确信这是一个常见问题,但我似乎找不到搜索词来了解它。
if (count($numbermessages)) {
while ($stmt->fetch()) {
$getrecipusernames= $mysqli->prepare("SELECT distinct(message_recips.userid), users.username, users.id FROM message_recips INNER JOIN users ON users.id=message_recips.userid WHERE messageid=?");
$getrecipusernames->bind_param('i', $messageid);
$getrecipusernames->execute();
$getrecipusernames->store_result();
$getrecipusernames->bind_result($recipuserid, $recipusername, $recipuserid1);
$getrecipusernames->fetch();
while ($getrecipusernames->fetch()) {
$usernamesarray[] = $recipusername;
}
$date_time=$created_on;
$dte_new=date("l H:i A", strtotime($date_time));
if ($status=="A"){
$message_read_status="read";
}
else {
$message_read_status="unread";
}
衷心感谢任何帮助!
解决方案是在填充数组之前声明数组,在while
循环之外:
$usernamesarray = array();
while($getrecipusernames->fetch()){
$usernamesarray[] = $recipusername;
}
if (count($numbermessages)) {
while ($stmt->fetch()) {
$getrecipusernames= $mysqli->prepare("SELECT distinct(message_recips.userid), users.username, users.id FROM message_recips INNER JOIN users ON users.id=message_recips.userid WHERE messageid=?");
$getrecipusernames->bind_param($messageid);//use one bind
$getrecipusernames->execute();
$getrecipusernames->store_result();
$getrecipusernames->bind_result($recipuserid, $recipusername, $recipuserid1);
while ($getrecipusernames->fetch()) {
$usernamesarray[] = $recipusername;
}
$date_time=$created_on;
$dte_new=date("l H:i A", strtotime($date_time));
if ($status=="A"){
$message_read_status="read";
}
else {
$message_read_status="unread";
}