0

我尝试制作 e eval 代码,但出了点问题,我找不到错误。

我有这个:

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

这是代码:

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

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

3 回答 3

1

你为什么用eval()这个?它可以实现如下:

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

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

于 2012-09-10T10:27:50.413 回答
1

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

If you're sure your values are delimited by comma's why not create the array yourself?

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

Or something like that?

于 2012-09-10T10:29:10.170 回答
0

不要使用 Eval,当然也不要用于将参数绑定到查询这样琐碎的事情!

于 2012-09-10T10:27:53.277 回答