函数名必须是PHP字符串

时间:2012-08-16 09:36:50

标签: php

当我尝试调用函数func_connect_mssql时,我收到此错误。

这是我的代码:

    $func_connect   = 'func_connect_mssql';
    $session = $func_connect($serv, $user, $pass, $base) 
or die("<p class='Perror'>&middot;Failed - err Connect: ".$func_error()."</p>");

你可以看到func_connect是一个变量,我用来调用函数,这就是我使用“$ func_connect”的原因,我试图改变它并直接输入我的函数名称,但仍然返回相同的错误第二行。

2 个答案:

答案 0 :(得分:1)

试试这个:call_user_func()

$func_connect   = 'func_connect_mssql';
$session = call_user_func($func_connect,$serv, $user, $pass, $base) or die("<p class='Perror'>&middot;Failed - err Connect: ".$func_error()."</p>");

答案 1 :(得分:1)

你自己的代码有点误导:

$func_connect   = 'func_connect_mssql';
$session = $func_connect($serv, $user, $pass, $base) or die("<p class='Perror'>&middot;Failed - err Connect: ".$func_error()."</p>");

相反,你应该至少把它包裹在多行上:

$func_connect   = 'func_connect_mssql';
$session = $func_connect($serv, $user, $pass, $base)
    or die("<p class='Perror'>&middot;Failed - err Connect: ".$func_error()."</p>")
    ;

然后,错误消息将告诉您错误发生在哪一行。你会惊讶地发现它处于与你目前认为不同的位置。

由于您的代码看起来有点脆弱,您可能还需要不时添加一些安全网:

$func_connect   = 'func_connect_mssql';

is_callable($func_connect)) or die('Connection Function is not callable!');
is_callable($func_error)) or die('Error function is not callable!');

$session = $func_connect($serv, $user, $pass, $base)
    or die("<p class='Perror'>&middot;Failed - err Connect: ".$func_error()."</p>")
    ;