首页 > 解决方案 > PHP 错误:HeredocStart 预期,语法错误意外文件结尾

问题描述

我正在为我的在线商店开发一个 PHP 脚本,当我尝试使用 Heredocs 时出现此错误。当我删除$prodotti变量时,一切正常。

<?php
function show_products(){
    global $connection;

    $query = "SELECT * FROM prodotto";
    $result = mysqli_query($connection, $query) or die(mysqli_error($connection));

    if($num_rows = mysqli_num_rows($result)){
        while($row = mysqli_fetch_assoc($result)){
          $prodotti = <<<STRINGA_PDT

          <div class="col-lg-4 col-md-6 mb-4">
          <div class="card h-100">
          <img class="card-img-top" src="../risorse/IMAGES/{$row['immagine']}" alt="">
            <div class="card-body">
              <h4 class="card-title">
                <a href="prodotto.php?id={$row['id_prodotto']}">{$row['nome_prodotto']}</a>
              </h4>
              <h5>€{$row['prezzo']}</h5>
              <p class="card-text">{$row['descr_prodotto']}</p>
            </div>
            <div class="card-footer text-center">
            <a href="carrello.php?add={$row['id_prodotto']}"><button type="button" class="btn btn-primary btn-small">Acquista</button></a>
            <a href="prodotto.php?id={$row['id_prodotto']}" class="btn btn-success btn-small">Dettagli</a>
            </div>
          </div>
        </div>

          STRINGA_PDT;
        }
    }
}

标签: php

解决方案


我认为这是一个非常简单的情况,确保 HEREDOC 结束的标记位于行首

    <?php
    function show_products(){
        global $connection;

        $query = "SELECT * FROM prodotto";
        $result = mysqli_query($connection, $query) or die(mysqli_error($connection));

        if($num_rows = mysqli_num_rows($result)){
            while($row = mysqli_fetch_assoc($result)){
              $prodotti = <<<STRINGA_PDT

              <div class="col-lg-4 col-md-6 mb-4">
              <div class="card h-100">
              <img class="card-img-top" src="../risorse/IMAGES/{$row['immagine']}" alt="">
                <div class="card-body">
                  <h4 class="card-title">
                    <a href="prodotto.php?id={$row['id_prodotto']}">{$row['nome_prodotto']}</a>
                  </h4>
                  <h5>€{$row['prezzo']}</h5>
                  <p class="card-text">{$row['descr_prodotto']}</p>
                </div>
                <div class="card-footer text-center">
                <a href="carrello.php?add={$row['id_prodotto']}"><button type="button" class="btn btn-primary btn-small">Acquista</button></a>
                <a href="prodotto.php?id={$row['id_prodotto']}" class="btn btn-success btn-small">Dettagli</a>
                </div>
              </div>
            </div>

STRINGA_PDT;
            }
        }
    }

其他任何事情都会导致 PHP 无法将其识别为 Heredoc


推荐阅读