私は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);
//the i read the data in the databse '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());
}
?>
どんな助けでも大歓迎です。
Heredocには少し変更が必要です(実際にはNowdocであるためです!)。
echo <<<EX
<p>Game: {$data['game_name']}<br/>
the owner of the game is {$data['game_owner']}
</p>
EX;
'EX'
はEX
になる必要があります。Heredocターミネータmust notの前には空白があります。ドキュメントから:
終了識別子を持つ行には、セミコロン(;)を除き、他の文字を含めることはできないことに注意することが非常に重要です。
NowdocとHeredocを混同しています。
{}
で囲まれている必要があります。たとえば、$data['game_name']
は{$data['game_name']}
である必要があります。Heredocとnowdocをここで混同しています。 Heredocおよびnot Nowdocを使用したいのは、文字列内に変数があるためです。ヒアドキュメントは「拡張された」二重引用符で囲まれた文字列ですが、nowdocは単一引用符で囲まれた文字列に似ています。変数はnowdoc文字列では解析されず、heredocにあります。
これらのドキュメントをより注意深く読んでください。