如何调用和执行存储在数据库中的函数?

时间:2011-05-03 13:51:27

标签: php mysql stored-procedures

我将函数getArray(pram1, pram2)存储在数据库(MySQL)中,并以数组形式返回数据。 当我传递查询时,它返回函数名称,因为我将其存储在数据库中, 但不执行此功能。

我正在使用的代码是:

$result=eval("return \$ret = $db_query_function;");
$db_query_function is variable that have function name getArray(pram1, pram2).

错误生成 eval()'代码

2 个答案:

答案 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).
祝你好运。