我尝试制作电子邮件代码,但出了点问题,我找不到错误。
我有这个:
解析错误:语法错误,意外','/Applications/XAMPP/xamppfiles/htdocs/classes/databasehandler.php(57):第1行的eval()代码
以下是代码:
eval("$s->bind_param('".$binds."', ".$values.");");
$BINDS ARE: ss
$VALUES ARE: 'testing','hej123'
答案 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,当然也不要使用将参数绑定到查询的微不足道的事情!