プロが教えるわが家の防犯対策術!

PHPで掲示板を作っているのですが、EOMを使ったときにデータベースからの呼び出しがうまくいきません。

print<<<EOM
".pg_result($rs, $i, "title")."
EOM;

だと、実行結果が

".pg_result($rs, $i, "title")."

になります。

print(" ".pg_result($rs, $i, "title")." ");

だとうまくいくのですが・・・
分かる方おしえてください。

A 回答 (2件)

ヒヤドキュメント内なので、当たり前です…(^^;


変数は、{}でくくれば利用出来ますので
$titile=pg_fetch_result($res,$i,"title");

print<<<EOM
{$title}

EOF;
といった感じで使ってください。
    • good
    • 0
この回答へのお礼

ありがとうございます。たすかりました。
・・・当たり前のことなのですね。
今までずっとprint文でやっていてこないだ見つけて
こんな便利なものがあったのかと早速使ってみたのですが。できないのでもう一度print文に直そうかと思ってました。

お礼日時:2004/12/14 13:12

#1さんがおっしゃってるように、ヒアドキュメント内は、


基本的に変数や配列は評価されます。

「2重引用符を使用しませんが、2重引用符で括られた 文字列と全く同様に動作します。」
と、マニュアルにもあるように、『同じように』動作するだけであって、同じではありません。

""(ダブルクォーテーション)でくくられた中で動作するのと同じなのです。
また、「"」も「'」もエスケープする必要がありません。


例えば、
ヒアドキュメント内は、print "次は{$i}番";と同じであり、
print "次は".$i."番";とは違うものです。

また、エスケープの必要がないというのは、
print "\".pg_result($rs, $i, \"title\").\"";
と言うように、自動的にエスケープしてくれているのと同じです。

つまり、ヒアドキュメント内での「"」「'」は、単なる文字列でしかありません。



参考になれば幸いです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
何冊か本を見たのですがprint文でしか書いていなかったので。
大変参考になりました。

お礼日時:2004/12/14 13:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!