在php中传递一个数组作为参数

时间:2016-09-27 14:35:42

标签: 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_array('$stmt->bind_param',$request['params']);
}
$stmt->execute();
$result = $stmt->get_result();

$ request ['params']包含需要在函数中添加的正确参数。

但是call_user_func_array给了我这个错误:

  

call_user_func_array()期望参数1是有效的回调函数,函数'$ stmt-> bind_param'找不到或函数无效。

我认为call_user_func_array可能不是正确的功能! 我用谷歌搜索了几个小时,但找不到解决这个小问题的方法。

3 个答案:

答案 0 :(得分:3)

如果你使用PHP 5.6+,你也可以使用splat运算符而不是$stmt->bind_param($types, ...$request['params']); ,例如。

bind_param

这对于你的用例来说更简洁,因为shift的初始参数需要function render() { requestAnimationFrame(render); renderer.render(scene, camera); } - 在参数数组的前面。

答案 1 :(得分:2)

要将方法用作call_user_func_array的回调参数,请使用包含对象名称和方法名称的数组作为回调参数。

查看PHP的call_user_func_array文档页面以获取进一步说明:http://php.net/manual/pt_BR/function.call-user-func-array.php

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));

答案 2 :(得分:1)

尝试类似:

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