PHP 返回不正确的 HTML 代码,忽略了一些标签

我有以下代码来显示数据库中的内容。while 循环应该在表格行中显示数据。输出不同:数据库中的数据显示在表格之前。while 似乎运行并忽略 html 标记,然后再次运行并忽略变量。


PHP代码:


// Instantiate database

$database = new Database();

$db = $database->getConnection();


// List transactions without bundles

$query = "SELECT * FROM stock_trx WHERE bundleId IS NULL";

$statement =  $db->prepare($query);

$statement->execute();

$n = $statement->rowCount();


if($n > 0){


    echo "<table>

        <thead>

            <tr>

                <th>Select</th>

                <th>Date</th>

                <th>Type</th>

                <th>Quantity</th>

                <th>Ticker</th>

                <th>Amount</th>

                <th>Currency</th>

            </tr>    

        </thead>

        <tbody>";


    // Retrieve table content

    while($row = $statement->fetch(PDO::FETCH_ASSOC)){

        // Extract row

        extract($row);


        echo "<tr>".$id."</tr>";

        echo "<tr>".$date."</tr>";

        echo "<tr>".$type."</tr>";

        echo "<tr>".$qty."</tr>";

        echo "<tr>".$ticker."</tr>";

        echo "<tr>".$amount."</tr>";

        echo "<tr>".$currency."</tr>";


    }


    echo "</tbody></table>";

} else {

    echo "No transaction";

}

HTML 输出:


<html>

<body>


12020-05-13 00:00:00BUYTEST1000022020-05-19 00:00:00SELTEST1200032020-05-24 00:00:00DIVTEST250<table>

        <thead>

            <tr>

                <th>Select</th>

                <th>Date</th>

                <th>Type</th>

                <th>Quantity</th>

                <th>Ticker</th>

                <th>Amount</th>

                <th>Currency</th>

            </tr>    

        </thead>

        <tbody><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr>

        </tbody>

    </table>


</body></html>

谢谢


天涯尽头无女友
浏览 105回答 3
3回答

陪伴而非守候

您需要行<tr>和<td>行内的单元格:while($row = $statement->fetch(PDO::FETCH_ASSOC)){&nbsp; &nbsp; // Extract row&nbsp; &nbsp; extract($row);&nbsp; &nbsp; echo "<tr>";&nbsp; &nbsp;// start row&nbsp; &nbsp; echo "<td>".$id."</td>";&nbsp; &nbsp; echo "<td>".$date."</td>";&nbsp; &nbsp; echo "<td>".$type."</td>";&nbsp; &nbsp; echo "<td>".$qty."</td>";&nbsp; &nbsp; echo "<td>".$ticker."</td>";&nbsp; &nbsp; echo "<td>".$amount."</td>";&nbsp; &nbsp; echo "<td>".$currency."</td>";&nbsp; &nbsp; echo "</tr>";&nbsp; // end row}echo "</tbody></table>";与另一个答案相反,我会这样做,因为您使用的是双引号:echo "<tr>";&nbsp; &nbsp;// start rowecho "<td>$id</td>";// etc...或者合并成一行,甚至一行:echo "<tr><td>$id</td><td>$date</td><td>$type</td><td>$qty</td><td>$ticker</td><td>$amount</td><td>$currency</td></tr>";

三国纷争

虽然其他一些人提到您需要 TD 标签,但我只想指出一些奇怪的 PHP 类型的东西,它们现在/将来可能对您有帮助,也可能不会。你的陈述可以重写<?phpwhile($row = $statement->fetch(PDO::FETCH_ASSOC)):&nbsp; &nbsp; // Extract row&nbsp; &nbsp; extract($row);?>&nbsp; &nbsp; <tr>&nbsp; &nbsp; &nbsp; <td><?php echo $id; ?>?</td>&nbsp; &nbsp; &nbsp; <td><?php echo $date; ?>?</td>&nbsp; &nbsp; &nbsp; <td><?php echo $type; ?>?</td>&nbsp; &nbsp; &nbsp; <td><?php echo $qty; ?>?</td>&nbsp; &nbsp; &nbsp; <td><?php echo $ticker; ?>?</td>&nbsp; &nbsp; &nbsp; <td><?php echo $amount; ?>?</td>&nbsp; &nbsp; &nbsp; <td><?php echo $currency; ?>?</td>&nbsp; &nbsp; </tr><?php endwhile; ?>这使用一些鲜为人知的格式来在 PHP 文件中使用 HTML,但它应该可以正常工作(使用 PHP 7.4 CLI 在本地测试)。有些人更喜欢它而不是必须使用它echo来输出所有 HTML,但是您仍然需要一堆 echo 语句来打印变量。重申一下,其他任何答案都没有错,我只是觉得在这种情况下,您将一堆 HTML 与 PHP 一起使用,这种表示法可以更容易使用。

皈依舞

正如一些人回答的那样,缺少以下标签:<td>
打开App,查看更多内容
随时随地看视频慕课网APP