如何在PHP的单个while循环中放置2个mysqli_fetch_assoc?

时间:2019-03-04 12:51:59

标签: php mysqli

我需要合并来自2个不同查询的数据(数据来自2个数据库)。因此,我将2个mysqli_fetch_assoc置于&&条件下。但这没有用。但是,它适用于单个mysqli_fetch_assoc。如何解决这个问题或有其他不同的方法吗? 示例代码如下所示:

<?php
    $dalText = new DALText;
    $resultTextEnglish =  $dalText->getTextEnglish($ParaID);
    $resultTextArabic =  $dalText->getTextArabic($ParaID);

    $data = "";
    while ($resTextEnglish = mysqli_fetch_assoc($resultTextEnglish) && $resTextArabic = mysqli_fetch_assoc($resultTextArabic))
    {
        $data .= '<div class="mdl-cell-a mdl-cell--12-col">';
        $data .= '['.$resTextArabic['ID'].'] ';
        $data .= $resTextArabic['Text'];
        $data .= '</div>';


        $data .= '<div class="mdl-cell-b mdl-cell--12-col">';
        $data .= '['.$resTextEnglish['ID'].'] ';
        $data .= $resTextEnglish['Text'];
        $data .= '</div>
    }
    print($data)
    ?>

1 个答案:

答案 0 :(得分:1)

两个表具有相同的行是可能的。如果两个表的行数不同,则为false,但不显示任何错误。

像这样对我来说很好。

$conn = new mysqli("localhost", "root", "", "stack_over_flow");
if ($conn->connect_errno) {
    echo "Failed to connect to MySQL: " . $conn->connect_error;
}
$res1 = $conn->query("SELECT * FROM abc");
$res2 = $conn->query("SELECT * FROM xyz");

while(($row1 = $res1->fetch_assoc()) && ($row2 = $res2->fetch_assoc())){
    echo '
        <tr>
            <td>'.$row1['a'].'</td>
            <td>'.$row1['b'].'</td>
            <td>'.$row1['c'].'</td>
        </tr>

        <tr>
            <td>'.$row2['val'].'</td>
        </tr>
    ';   
}