2012-06-30 15 views
20

Tôi là người mới dùng PHP/SQL và tôi đang cố gắng sử dụng biến trong một heredoc vì tôi cần phải dùng nhiều văn bản. Tôi chỉ bao gồm câu đầu tiên vì nó đủ để hiển thị vấn đề).Sử dụng biến trong heredoc trong PHP (thực hành SQL)

Vấn đề của tôi là ở trong heredoc, các biến (xem bên dưới: $data['game_name]$data['game_owner']) không được nhận dạng dưới dạng biến mà là văn bản thuần. Làm sao tôi có thể giải quyết việc này?

<?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()); 
} 
?> 

Mọi trợ giúp sẽ được đánh giá cao.

+0

bạn đang sử dụng [NOWDOC] (http://php.net/nowdoc) không phải HEREDOC – Gordon

Trả lời

61

Heredoc của bạn cần một sự sửa đổi chút (vì nó thực sự Nowdoc!):

echo <<<EX 
    <p>Game: {$data['game_name']}<br/> 
    the owner of the game is {$data['game_owner']} 
    </p> 
EX; 
  • định danh Heredoc (không giống như những người nowdoc) không thể được trích dẫn. 'EX' cần phải trở thành EX.
  • Trình kết thúc Heredoc không được có bất kỳ khoảng trống trước nào. Từ tài liệu:

    Điều quan trọng cần lưu ý là dòng có mã định danh kết thúc không được chứa các ký tự khác, ngoại trừ dấu chấm phẩy (;).

    Bạn đang bối rối Nowdoc with Heredoc.

  • Các loại dữ liệu phức tạp trong chuỗi phải được bao quanh bởi {} để chúng được phân tích cú pháp dưới dạng biến. Ví dụ: $data['game_name] phải là {$data['game_name]}.

Bạn đang trộn lẫn heredoc và nowdoc tại đây. Bạn muốn sử dụng Heredockhông Nowdoc vì bạn đã có các biến bên trong chuỗi của mình. Heredocs là các chuỗi được trích dẫn kép "mở rộng", trong khi nowdocs giống với một chuỗi được trích dẫn duy nhất, trong các biến đó không được phân tích cú pháp trong các chuỗi nowdoc, nhưng nằm trong heredoc.

  • Thông tin thêm về Heredoc here.
  • Thông tin thêm về Nowdoc here.

Vui lòng đọc kỹ tài liệu này kỹ hơn.

+0

tuyệt vời, cảm ơn nó đã hoạt động! – Mathieu

+0

vâng tôi đã gỡ bỏ các dấu ngoặc đơn trên 'EX' để làm cho nó heredoc – Mathieu

+0

tôi đã triển khai và nó đã hoạt động! – Mathieu