我将函数getArray(pram1, pram2)
存储在数据库(MySQL)中,并以数组形式返回数据。
当我传递查询时,它返回函数名称,因为我将其存储在数据库中,
但不执行此功能。
我正在使用的代码是:
$result=eval("return \$ret = $db_query_function;");
$db_query_function is variable that have function name getArray(pram1, pram2).
错误生成 eval()'代码
答案 0 :(得分:0)
你必须使用call_user_func()。
call_user_func('function_name', $parameter);
答案 1 :(得分:0)
首先,它可能不是在数据库中存储函数的最佳解决方案。
如果要在数据库中存储函数 implementation ,则必须单独存储函数体和参数列表(但不应给函数指定名称),这样就可以了使用create_function在运行时将函数放入变量中。
例如:
function add($a, $b)
{
return $a + $b;
}
应该以类似于:
的变量结束$arguments = '$a, $b'; // note single quotes, no variable expansion!
$implementation = 'return $a + $b;'; // single quotes again
$myFunction = create_function($arguments, $implementation);
现在您可以调用您的函数:
$sum = $myFunction(10, 20); // $sum will now hold 30
如果您只想运行存储在数据库中的代码,您只需要eval。
在这两种情况下,您最有可能(但并非绝对)错过了更好/更简单的方法来处理您的代码。在您的示例中,最可能的错误是pram1和pram2在字符串中需要一个美元符号,但代码示例不够完整,无法确定。也可能是函数不存在或者你缺少分号,或者......
尝试:
$result = eval('return '.$db_query_function);
getArray(pram1, pram2).
祝你好运。