Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何调用和执行存储在数据库中的函数?_Php_Mysql_Stored Procedures - Fatal编程技术网

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

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

我在数据库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 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).