43

私は PHP/SQL の初心者で、大量のテキストを出力する必要があるため、ヒアドキュメント内で変数を使用しようとしています。問題を示すのに十分なので、最初の文だけを含めました)。

私の問題は、ヒアドキュメント内で、変数 (以下を参照:$data['game_name]および$data['game_owner']) が変数として認識されず、プレーン テキストとして認識されることです。どうすればこれを解決できますか?

<?php
    try
    {
        // I am connecting the the database base mysql 'test'
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);

        // Then I read the data in the database 'video_dame'
        $response = $bdd->query('SELECT * FROM video_game');

        // Pour qu'elle soit visible à l'écran, on affiche
        // chaque entrée une à une
        while ($data = $response->fetch())
        {

            echo <<<'EX'
            <p>Game: $data['game_name']<br/>
            the owner of the game is $data['game_owner']
            </p>
            EX;

        }
        // I end the SQL request
        $response->closeCursor();
    }
    catch (Exception $e)
    {
        die('Error: ' . $e->getMessage());
    }
?>
4

1 に答える 1

108

ヒアドキュメントを少し変更する必要があります (実際には Nowdoc であるためです!):

    echo <<<EX
    <p>Game: {$data['game_name']}<br/>
    the owner of the game is {$data['game_owner']}
    </p>
EX;
  • ヒアドキュメント識別子は (nowdoc のものとは異なり) 引用できません。'EX'になる必要がありますEX
  • ヒアドキュメント ターミネータの前に空白があってはなりません。ドキュメントから:

    終了識別子のある行には、セミコロン (;) 以外の文字を含めないでください。

    Nowdoc とヒアドキュメントを混同しています。

  • {}文字列内の複雑なデータ型は、変数として解析されるようにで囲む必要があります。たとえば、 で$data['game_name']ある必要があります{$data['game_name']}

heredoc と nowdoc here を混同しています。文字列内に変数があるため、Nowdoc ではなくヒアドキュメントを使用します。ヒアドキュメントは「拡張された」二重引用符で囲まれた文字列ですが、nowdoc は一重引用符で囲まれた文字列に似ており、変数は nowdoc 文字列では解析されず、ヒアドキュメント内にあります。

  • ヒアドキュメントの詳細はこちら.
  • Nowdoc の詳細については、こちらを参照してください。

これらについては、ドキュメントをより注意深く読んでください。

于 2012-06-30T13:21:25.947 に答える