我正在尝试使用未知数量的参数准备一个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可能不是正确的功能! 我用谷歌搜索了几个小时,但找不到解决这个小问题的方法。
答案 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']);