PHP mysqli从不同的表中提取数据,并使用2 while函数进行回显


PHP mysqli extract data from different tables and echo with 2 while functions

我一直在为网站的一部分编码。我正在从第一张表中提取你正在使用的帐户的友谊。

然后我做了一个while来获取我朋友的所有用户名,然后我查询个人资料表来获取其他两个信息,比如性别和出生日期。

我的问题是,第一个if(query)while(friend_username)运行良好,我可以取出所有数据并打印用户列表,但当我用第二个while(sex,birth_date)进行第二次查询时,什么都不起作用,我找不到问题,这是我第二天尝试修复它,但我找不出解决方案。。

很抱歉我的英语不好,也很抱歉我糟糕的编码技巧。

我不知道我做错了什么。

<?php
$query = "SELECT friend_username FROM friends WHERE username = ? AND amicizia = '1' AND ban = '0' ";
if($stmt = $mysqli->prepare($query))
{
    // bind parameter
    $stmt->bind_param('s', $username );
    // execute
    $stmt->execute();
    // bind result to a variable
    $stmt->bind_result($amici);
    // iterate through the results
    echo "$amici";
    while ($stmt->fetch())
    {
        $queryu = "SELECT sesso , data_nascita FROM profiles WHERE username = ? ";
        if($stmtp = $mysqli->prepare($queryu))
        {
            // bind parameter
            $stmtp->bind_param('s', $amici );
            // execute
            $stmtp->execute();
            // bind result to a variable
            $stmtp->bind_result($sesso, $data_nascita);
            while ($stmtp->fetch())
            {
                // FARE CICLO WHILE CHE ESTRAPOLA LE INFORMAZIONE DALLA TABELLA PROFILES MA SISTEMARE PRIMA HE AL LOGIN COMPILI I CAMPI SULLA TAB PROFILES
                echo "
                <tr>
                <td>
                <div class='"gallery'" style='"height: 76px;'">
                <a href='"img/profilo.jpg'"><img class='"align-left'" src='"img/amico.png'" width='"60'" height='"60'" /></a>
                </div>
                </td>
                <td>
                <ul style='"height:45px;'">
                <li style='"padding: 0;'">$amici</li>
                <li style='"padding: 0;'">$sesso</li>
                <li style='"padding: 0;'">$data_nascita</li>
                </ul>
                </td>
                <td>
                <p>Lorem Ipsum è un testo segnaposto utilizzato nel settore della tipografia e della stampa. Lorem Ipsum è considerato il testo segnaposto standard sin dal sedicesimo secolo</p>
                </td>
                <td>
                <a href='"'"><i class='"icon-user icon-2x'"></i></a>
                <a href='"'"><i class='"icon-envelope icon-2x'"></i></a>
                <a href='"'"><i class='"icon-heart-empty icon-2x'"></i></a>
                <a href='"'"><i class='"icon-trash icon-2x'"></i></a>
                </td>
                </tr>
                ";
            }
        }
    }
}
?>

如果可能,您应该使用表联接在一个查询中获取所有必需的数据。使用代码片段中的表,它可能看起来像这样:

SELECT a.friend_username, b.sesso, b.data_nascita FROM friends as a 
JOIN profiles as b ON(b.username=a.friend_username)
WHERE a.username = ? AND a.amicizia = '1' AND a.ban = '0'

为了回答您的实际问题,可以进行嵌套查询,但为了使您的示例发挥作用,您需要创建第二个mysql连接(例如:$mysqli2=new-mysqli(…)),并在外部while循环中使用该连接。