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