phpで変数混じりのDBの結果を出力したくて、柿のようなコードを書いたところ、eval()’d code on line 2というエラーがおきました。原因は何でしょうか?

$str = $row[’test’];
eval(”¥$str = ¥”$str¥”;”);
echo $str;

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/08/11 16:14:20
  • 終了:--

回答(4件)

id:aki73ix No.1

aki73ix回答回数5224ベストアンサー獲得回数272004/08/11 16:32:42

ポイント17pt

$row[’test’]は パラメータ変数からtestの値を抜き出しているのだと思いますが $row の中味が気になります

まず、評価すべき$str=$strの中味が空だったのではないでしょうか?

この式だと $strの中味を再評価して展開することになります

このeval()の中味の2行目にエラーがあるという意味です

展開する evalの文字列の中味つまり $strがちゃんと {}が閉じていなかったり、”の数が合っていなかったり、$strが空白だったり、エスケープ文字が入っていたりしませんか?

eval を一度コメントアウトしてみて $strの中味を確認してみてください

id:harakachi No.2

harakachi回答回数18ベストアンサー獲得回数02004/08/11 16:36:34

ポイント17pt

http://yodobashi.co.jp/

ヨドバシカメラ:人気の電化製品が何でも揃う!

ポイントはいりません。

¥が全角になっているのでは?

id:kahochu No.3

かほちゅう回答回数162ベストアンサー獲得回数02004/08/11 16:50:28

ポイント18pt

evalを使わなくても可変変数でできます。

$$str = $str;

id:JULY No.4

JULY回答回数966ベストアンサー獲得回数2472004/08/11 17:46:14

ポイント18pt

「パーサーが eval()の処理中に落ちないように、 渡す文字列はセミコロンで文が終了

するといった有効なPHPコード である必要があります。」ということですから、

$str 自体の中身、元をたどれば $row{’test’] の中身が原因、ということです。

例えば、$str の中身が「test”test」だったとします。すると、eval に渡される

文字列は、「$str = ”test”test”;」となります。これを PHP の文として解釈すれば、

エラーになることは分かりますよね。

id:Tariq

うーむ。なるほど。ありがとうございます

2004/08/11 20:34:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません