Eval代码不起作用

时间:2012-09-10 10:24:24

标签: php eval

我尝试制作电子邮件代码,但出了点问题,我找不到错误。

我有这个:

  

解析错误:语法错误,意外','/Applications/XAMPP/xamppfiles/htdocs/classes/databasehandler.php(57):第1行的eval()代码

以下是代码:

eval("$s->bind_param('".$binds."', ".$values.");");

$BINDS ARE: ss
$VALUES ARE: 'testing','hej123'

3 个答案:

答案 0 :(得分:1)

为什么要使用eval()?它可以实现如下:

$binds = 'si';
$values = array('a string', 4609);
$args = array($binds) + $values;
call_user_func_array(array($s, 'bind_param'), $args);

上面的代码更快(不调用新的执行上下文),更安全(变量直接传递,没有关于转义的假设)。

答案 1 :(得分:1)

双引号由PHP解析,因此eval("$s->bind_param...");等于eval($s."->bind_param...');。将double替换为单引号,您的 EVIL 代码将起作用。

如果你确定你的值是用逗号分隔的,为什么不自己创建数组呢?

$values = explode(',',preg_replace('/[\'"]/g','',$values));

或类似的东西?

答案 2 :(得分:0)

不要使用Eval,当然也不要使用将参数绑定到查询的微不足道的事情!