如果我采取并做这样的事情:
$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);
}
我得到Parse错误:语法错误,意外的T_VARIABLE,期待ajax \ getprices.php(30)中的T_STRING:第1行的eval()代码
不确定为什么,如果我打印echo $ math,它与我在第一个例子中的$ evalstr相同。 $ p和$ n实际上是从GET变量设置的,但即使我按照示例手动设置它们也不起作用。
答案 0 :(得分:1)
在我看来,您在数据库中存储了包含转义的 $ 的表达式。您可以尝试,如果它有效,如果您首先删除斜杠:
eval(stripslashes($math));
我也建议在将这些代码存储在数据库中并使用 eval 执行它时要非常小心。这里存在安全漏洞的可能性。但我想,你知道这一点。
答案 1 :(得分:0)
我明白了,似乎在将eval代码定义为变量时我必须逃避$但是当它从mysql中作为变量拉出它时它会工作,如果我unescape $