在php中作为参数传递数组

在php中作为参数传递数组,php,sql,Php,Sql,我正在准备一个参数未知的sql语句!这些参数在数组中已过期。函数的正常语法为: $stmt->bind_param("string of types",param1,param2,...,paramN) 问题是我不知道如何在函数$stmt->bind_param的数组中添加参数 我有此代码,但不起作用: $stmt= $conn->prepare($request['query']); if(isset($request['params'])){ call_user_func_ar

我正在准备一个参数未知的sql语句!这些参数在数组中已过期。函数的正常语法为:

$stmt->bind_param("string of types",param1,param2,...,paramN)
问题是我不知道如何在函数$stmt->bind_param的数组中添加参数

我有此代码,但不起作用:

$stmt= $conn->prepare($request['query']);
if(isset($request['params'])){
call_user_func_array('$stmt->bind_param',$request['params']);
}
$stmt->execute();
$result = $stmt->get_result();
$request['params']包含需要添加到函数中的正确参数

但是call_user_func_数组给了我以下错误:

call_user_func_array()要求参数1为有效回调函数,未找到函数“$stmt->bind_param”或函数无效

我认为call\u user\u func\u数组可能不是正确的函数! 我在谷歌上搜索了几个小时,但找不到解决这个小问题的方法。

试试以下方法:

call_user_func_array(array($stmt,'bind_param'),$request['params']);
尝试以下方法:

call_user_func_array(array($stmt,'bind_param'),$request['params']);

若要将方法用作调用用户函数数组的回调参数,请使用包含对象名和方法名的数组作为回调参数

查看PHP的
call\u user\u func\u array
文档页面,了解更多说明:


若要将方法用作调用用户函数数组的回调参数,请使用包含对象名和方法名的数组作为回调参数

查看PHP的
call\u user\u func\u array
文档页面,了解更多说明:


如果您使用的是PHP5.6+,那么也可以使用运算符,而不是使用
调用用户函数数组

$stmt->bind_param($types, ...$request['params']);

这对于您的用例来说会更整洁,因为有一个
bind_param
的初始参数,否则需要
shift
-ed到参数数组的前面。

如果您使用的是PHP5.6+,您也可以使用操作符,而不是使用
call_user_func_array
,例如

$stmt->bind_param($types, ...$request['params']);

这对于您的用例来说会更整洁,因为有一个
bind_param
的初始参数,否则需要
shift
-ed到参数数组的前面。

请阅读您正在使用的函数。注意:这些示例演示了如何通过此函数正确调用对象方法。请阅读您正在使用的函数。请注意,示例演示了如何通过此函数正确调用对象方法。谢谢!问题是它给出的是一个值而不是引用:mysqli_stmt::bind_param()的参数2应该是一个引用,值给定就解决了它!我使用了
call_user_func_数组(数组($stmt,'bind_param')、refValues($request['params'))通过这个函数我在互联网上获得:
函数refValues($arr){if(strnatcmp(phpversion(),'5.3')>=0)//PHP5.3+{$refs=array();foreach($arr as$key=>$value)$refs[$key]=&$arr[$key];return$refs;}return$arr;}
谢谢!问题是它给出的是一个值而不是引用:mysqli_stmt::bind_param()的参数2应该是一个引用,值给定就解决了它!我使用了
call_user_func_数组(数组($stmt,'bind_param')、refValues($request['params'))通过这个函数,我在互联网上找到了:
函数refValues($arr){if(strnatcmp(phpversion(),'5.3')>=0)//PHP5.3+{$refs=array();foreach($arr as$key=>$value)$refs[$key]=&$arr[$key];return$refs;}return$arr;}
我没有使用5.6+!因为这只是在USBweb服务器上的一个测试,这是5.2版本,但是如果我没有使用5.6+,那么你的解决方案将是最好的!因为这只是在USBweb服务器上的一个测试,这是5.2版本,但是如果我有这个版本,你的解决方案将是最好的