HEREDOC Возвращение неожиданного конца

Следующий фрагмент вызывает

Msgstr "Ошибка паролей PHP: ошибка синтаксиса, неожиданный $ end in / Applications / MAMP / htdocs3 / nettuts / PHP / PDO для доступа к базе данных / htdocs / view_users02.php в строке 39"

Я просмотрел сайт и Google, но не нашел точного решения.

foreach($DBH->query($sql) as $row){ $output = "<tr><td align='left'>" . $row["name"] . "</td><td align='left'>" . $row["dr"] . "</td></tr>"; // echo '<tr><td align="left">' . $row['name'] . '</td><td align="left">' . $row['dr'] . '</td></tr>'; echo <<<EOT $output EOT; 

Полный скрипт

 <?php $page_title = 'View the Current Users'; include ('includes/header.html'); // Page header: echo '<h1>Registered Users</h1>'; require_once ('../mysql_pdo_connect.php'); // Connect to the db. // Make the query: $sql = "SELECT CONCAT(last_name, ', ', first_name) AS name, DATE_FORMAT(registration_date, '%M %d, %Y') AS dr FROM users ORDER BY registration_date ASC"; // Table header. echo <<<EOT <table align='center' cellspacing='3' cellpadding='3' width='75%'> <tr><td align='left'><b>Name</b></td><td align='left'><b>Date Registered</b></td></tr> EOT; foreach($DBH->query($sql) as $row){ $output = "<tr><td align='left'>" . $row["name"] . "</td><td align='left'>" . $row["dr"] . "</td></tr>"; // echo '<tr><td align="left">' . $row['name'] . '</td><td align="left">' . $row['dr'] . '</td></tr>'; echo <<<EOT $output EOT; } echo '</table>'; // Close the table. $DBH = null; include ('includes/footer.html'); ?> 

У вас есть целая куча пространств (точнее, 9) после EOT; в петле.

Из руководства

… не должно быть пробелов или вкладок до или после точки с запятой …

Почему вы переносите переменную $output внутри строки HEREDOC? Я просто изменил бы цикл на

 printf('<tr><td align="left">%s</td><td align="left">%s</td></tr>', htmlspecialchars($row["name"]), htmlspecialchars($row["dr"])); 

или даже лучше, используйте альтернативный синтаксис PHP .