Используйте переменную в heredoc в PHP (практика SQL)
Я новичок в 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 answers
Ваш 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, потому что у вас есть переменные внутри строки. Heredoc - это "расширенные" строки в двойных кавычках, тогда как nowdoc больше похожи на строку в одинарных кавычках, поскольку переменные не анализируются в nowdoc строки, но находятся в heredoc.
Пожалуйста, более внимательно прочитайте документацию по этим вопросам.