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

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

«Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный конец $ в /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');
?>

person Wasabi    schedule 15.08.2011    source источник


Ответы (1)


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

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

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

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

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

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

person Phil    schedule 15.08.2011