为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
天涯尽头无女友 2023-03-11 17:21:46
我有以下代码来显示数据库中的内容。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>谢谢
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您需要行<tr>和<td>行内的单元格:


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

    // Extract row

    extract($row);


    echo "<tr>";   // start row

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

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

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

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

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

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

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

    echo "</tr>";  // end row

}

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

与另一个答案相反,我会这样做,因为您使用的是双引号:


echo "<tr>";   // start row

echo "<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>";


查看完整回答
反对 回复 2023-03-11
?
三国纷争

TA贡献1804条经验 获得超7个赞

虽然其他一些人提到您需要 TD 标签,但我只想指出一些奇怪的 PHP 类型的东西,它们现在/将来可能对您有帮助,也可能不会。


你的陈述可以重写


<?php

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

    // Extract row

    extract($row);?>

    <tr>

      <td><?php echo $id; ?>?</td>

      <td><?php echo $date; ?>?</td>

      <td><?php echo $type; ?>?</td>

      <td><?php echo $qty; ?>?</td>

      <td><?php echo $ticker; ?>?</td>

      <td><?php echo $amount; ?>?</td>

      <td><?php echo $currency; ?>?</td>

    </tr>

<?php endwhile; ?>

这使用一些鲜为人知的格式来在 PHP 文件中使用 HTML,但它应该可以正常工作(使用 PHP 7.4 CLI 在本地测试)。有些人更喜欢它而不是必须使用它echo来输出所有 HTML,但是您仍然需要一堆 echo 语句来打印变量。


重申一下,其他任何答案都没有错,我只是觉得在这种情况下,您将一堆 HTML 与 PHP 一起使用,这种表示法可以更容易使用。


查看完整回答
反对 回复 2023-03-11
?
皈依舞

TA贡献1851条经验 获得超3个赞

正如一些人回答的那样,缺少以下标签:

<td>


查看完整回答
反对 回复 2023-03-11
  • 3 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信