如果我參加,做這樣的事情:PHP的eval()代碼的MySQL查詢返回的*不工作*
$p = 10;
$n = 3;
$evalstr = "\$f = 0.99 + ((.025 * \$p) * \$n);";
eval($evalstr);
echo $f;
我得到顯示1.74,沒有錯誤,一切都很好,但是當我有一個MySQL表持有這些方程(在這個例子的目的,它是完全一樣的方程)......像這樣:
$p = 10;
$n = 3;
while ($result = mysql_fetch_assoc($results)) {
$math = $result['math'];
//at this point $math = "\$f = 0.99 + ((.025 * \$p) * \$n);"
eval($math);
}
我得到解析錯誤:語法錯誤,意想不到的T_VARIABLE,預計在阿賈克斯T_STRING \ getprices。 php(30):eval()'代碼在線1
不確定爲什麼,如果我打印的echo $ math與第一個示例中的$ evalstr相同。 $ p和$ n實際上是從GET變量中設置的,但即使我手動設置它們(如在示例中它不起作用)。
建議時。儘量不要將您的PHP存儲在數據庫中。如果你有一個sql注入漏洞,有人可能會完全損害你的整個代碼庫。不只是你的數據庫。 – Cyclone
http://ideone.com/T20A4你確定$數學真的是你說的嗎? –
嘗試用'var_dump($ math)'替換'eval()'並告訴我們_exactly_它打印出來的內容。 –