Heredoc字符串和TCPDF来构建动态PDF

时间:2012-11-21 17:56:18

标签: php tcpdf heredoc

我正在尝试根据我拥有的数据库中的信息构建PDF。我这样做时出现500内部服务器错误。抛出错误的代码是:

<?php
include('db.php');

    $pdfArray = array();

    $top = '<h1>Med One Equipment List</h1>
            <table>
            <thead>
                <tr>
                    <td>Manufacturer</td>
                    <td>Model</td>
                    <td>Description</td>
                </tr>
            </thead>
            <tbody>
        ';
        array_push($pdfArray, $top);

    while($rowAll = mssql_fetch_array($allResult)) {
        $html = '
        <tr>
            <td>'.$rowAll["Manufacturer"].'</td>
            <td>'.$rowAll["Model"].'</td>
            <td>'.$rowAll["Make"].'</td>
        <tr>';
        array_push($pdfArray, $html);
    }

    $bottom = '</tbody>
                </table>';

    array_push($pdfArray, $bottom);

    $table = implode(" ", $pdfArray);

    $html =  <<<EOF 
    {$table} 
    EOF;
?>

我在使用TCPDF构建PDF时只包含此文件。如果我需要包含一些TCPDF代码,请告诉我。我不能为我的生活弄清楚为什么它不起作用。我的猜测是我错误地使用了herdoc。

2 个答案:

答案 0 :(得分:0)

通过查看代码的原始格式,它看起来像

$html =  <<<EOF
{$table} 
EOF;

缩进了一个标签。如果真实代码就是这种情况,那么问题是heredoc的结束必须是一行中的第一件事。如果它是缩进的,它将会中断。因此,如果您的代码是缩进的,则需要看起来像这样:

if($example_block){
    $html =  <<<EOF
    {$table} 
EOF;

    {other indented code}
}

P.S。关于使用上面提到的选项卡进行缩进的观察是在问题被编辑之前,但是如果它用一个或多个空格缩进,它将会破坏。此外,Kyle说明开头标识符也必须紧跟一个新行。

答案 1 :(得分:0)

我只是复制并粘贴你的代码。错误来自位于<<<EOF行之后的空格。

您有$html = <<<EOF(space)

应为$html = <<<EOF