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