在 HTML 中嵌套 PHP 个块

Nested PHP blocks in HTML

我有一个 table,在 MySQL 中有 10 行和 19 列。我试图在 HTML 中显示 table 的内容。为此,我写了下面的代码。

<?php
.
.
.
$con = mysqli_connect($host,$user,$password,$db);
$i="select * from data where user='".$usr."'";
$result=mysqli_query($con,$i);
$matrix = mysqli_fetch_all($result);
        
            
        $row = $matrix[0];
        
        $cell = $row[1];
        echo $cell;
    }

?>

<html>
        <style>
        table {
          border:2px solid black;
          width: 100%;
          margin-left:0%;
        }
        tr, td {
          border:1px solid black;
          width: 1%;
          font-size: 20px;
          text-align:center;
        }
        </style>

        <table>
            <?php
                $b=0;
                while ($b<10) {
                    echo '
                        <tr>
                             <?php
                                $a=0;
                                while ($a<18) {
                                    echo "
                                        <td>
                                            $row[$a]
                                        </td>
                                    ";
                                    $a++;
                                }
                             ?>
                        </tr>
                    ';
                    $b++;
                }
            ?>
        </table>
</html>

代码无效。我还阅读了一个类似的问题,有人回答用 ". ." 替换内部 <?p ?> 。我试过了,但没有得到预期的结果。 这段代码有什么问题?

您正在将一个开放的 php 标签放入 echo 中。相反,请将它们分开。

<table>
<?php
  $b=0;
  while ($b<10) {
    echo '<tr>';
    $a=0;
    while ($a<18) {
      echo "<td>$row[$a]</td>";
      $a++;
    }
    echo '</tr>';
  $b++;
  }?>
</table>

在你的代码中,你有这个:

...
echo '
  <tr>
     <?php
         $a=0;
         ...

... 有 3 个错误。首先,php 中单引号内的任何内容都不会被评估(解析)。因此,即使是这样的:echo 'hello $name'; 也会吐出输出:hello $nameecho "hello $name";(双引号)会解析变量 $name 并会吐出如下内容:hello Sam.

其次,当您已经在 php 标签内时,您正试图打开一个新的 php 标签。

第三,这确实是这里的交易破坏者,您正在尝试在回显字符串内启动一个新的逻辑块(一个循环)。这不适用于单引号或双引号。如果您查看我的回答,我会关闭第一个回声以开始循环。