PHP eval()代码从mysql查询返回*不工作*


PHP eval() code returned from mysql query *not working*

如果我这样做:


    $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在ajax'getprices.php(30): eval()'d代码在第1行

不知道为什么,如果我打印echo $math,它是否与我在第一个例子中作为$evalstr的相同?$p和$n实际上是从GET变量中设置的,但即使我像示例中那样手动设置它们也不起作用。

在我看来,您在数据库中存储了包含转义的$的表达式。如果可以的话,可以先删除斜杠:

eval(stripslashes($math));

我也建议在将这样的代码存储在数据库中并使用eval执行它时要非常小心。这里存在潜在的安全漏洞。但是我想你知道这个

我得到了它,似乎当定义eval代码作为一个变量时,我必须转义$,但当从mysql中将其作为一个变量时,如果我不转义$