人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: Tariq
●カテゴリ:コンピュータ
✍キーワード:DB echo ON PHP STR
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● aki73ix
●17ポイント

http://php.s3.to/man/function.eval.html

eval

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

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

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

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

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

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


2 ● harakachi
●17ポイント

http://yodobashi.co.jp/

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

ポイントはいりません。

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


3 ● かほちゅう
●18ポイント

http://php.s3.to/man/language.variables.variable.html

可変変数

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

$$str = $str;


4 ● JULY
●18ポイント

http://jp.php.net/manual/ja/function.eval.php

PHP: eval - Manual

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

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

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

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

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ