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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:aki73ix No.1

回答回数5224ベストアンサー獲得回数27

ポイント17pt

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

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

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

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

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

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

id:harakachi No.2

回答回数18ベストアンサー獲得回数0

ポイント17pt

http://yodobashi.co.jp/

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

ポイントはいりません。

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

id:kahochu No.3

回答回数162ベストアンサー獲得回数0

ポイント18pt

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

$$str = $str;

id:JULY No.4

回答回数966ベストアンサー獲得回数247

ポイント18pt

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

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

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

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

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

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

id:Tariq

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

2004/08/11 20:34:13

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

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

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

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

回答リクエストを送信したユーザーはいません