Php 如何调用和执行存储在数据库中的函数?
我在数据库MySQL中存储了函数getArraypram1和pram2,它以数组的形式返回数据。 当我传递查询时,它返回我存储在数据库中的函数名, 但不执行此函数 我使用的代码是:Php 如何调用和执行存储在数据库中的函数?,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,我在数据库MySQL中存储了函数getArraypram1和pram2,它以数组的形式返回数据。 当我传递查询时,它返回我存储在数据库中的函数名, 但不执行此函数 我使用的代码是: $result=eval("return \$ret = $db_query_function;"); $db_query_function is variable that have function name getArray(pram1, pram2). 生成评估代码时出错您必须使用call\u user\u
$result=eval("return \$ret = $db_query_function;");
$db_query_function is variable that have function name getArray(pram1, pram2).
生成评估代码时出错您必须使用call\u user\u func
call_user_func('function_name', $parameter);
首先,在数据库中存储函数可能不是最好的解决方案 如果要在数据库中存储函数实现,则只需单独存储函数体和参数列表,但不应为函数指定名称,以便在运行时将函数放入变量中 例如:
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
如果您只想运行存储在数据库中的代码,那么您所需要的就是
在这两种情况下,您很可能(但不一定)错过了一种更好/更简单的处理代码的方法。在您的示例中,最可能的错误是pram1和pram2要求字符串中有一个美元符号,但代码示例不够完整,无法确定。也可能是函数不存在或缺少分号,或者
尝试:
祝你好运。函数定义存储在数据库中函数定义存储在数据库中
$result = eval('return '.$db_query_function);
getArray(pram1, pram2).