Использование переменной в heredoc в PHP (SQL practice)
Я новичок в PHP / SQL, и я пытаюсь использовать переменную в heredoc, так как мне нужно много текста. Я включил только первое предложение, поскольку этого достаточно, чтобы показать проблему).
Моя проблема заключается в том, что в heredoc переменные (см. ниже:$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());
}
?>
Любая помощь была бы очень признательна.1 ответ:
Ваш Heredoc нуждается в небольшой модификации (потому что это на самом деле теперь Doc!):
echo <<<EX <p>Game: {$data['game_name']}<br/> the owner of the game is {$data['game_owner']} </p> EX;
- идентификаторы Heredoc (в отличие от идентификаторов nowdoc) нельзя цитировать.
'EX'
должен статьEX
.Терминатор Heredocне должен иметь никаких предшествующих пробелов. Из документов:
Очень важно отметить, что строка с закрывающим идентификатором не должна содержать никаких других символов, кроме, возможно, точки с запятой (;).Ты путаешь. Nowdoc при помощи heredoc.
- сложные типы данных в строках должны быть окружены
{}
, чтобы их можно было анализировать как переменные. Например,$data['game_name']
должно быть{$data['game_name']}
.Вы путаете heredoc и nowdoc здесь. Вы хотите использовать Heredoc и Не Nowdoc, потому что у вас есть переменные внутри строки. Heredocs-это "расширенные" строки в двойных кавычках, тогда как nowdoc больше похожи на одну строку в кавычках, поскольку переменные не анализируются в строках nowdoc, но в помощи heredoc.
Пожалуйста, прочтите документацию по ним более внимательно.