传递数组作为参数在PHP
我想准备一个未知数量的参数的SQL语句!这些参数在数组中已经过去了。该函数的语法正常会是:传递数组作为参数在PHP
$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() expects parameter 1 to be a valid callback, function '$stmt->bind_param' not found or invalid function.
我想call_user_func_array可能不使用正确的功能! 我搜索了几个小时,但找不到解决这个小问题的方法。
尝试类似:
call_user_func_array(array($stmt,'bind_param'),$request['params']);
谢谢!问题是它给出了一个值,而不是一个引用:参数2到mysqli_stmt :: bind_param()预计是一个参考,给出的值 –
解决了它!我使用了'call_user_func_array(array($ stmt,'bind_param'),refValues($ request ['params']));'用这个函数我在网上找到了''function refValues($ arr){if(strnatcmp phpversion(),'5.3')> = 0)// PHP引用是必需的5.3+ { $ refs = array(); ($ arr as $ key => $ value) $ refs [$ key] =&$ arr [$ key]; return $ refs; } return $ arr; }' –
要使用的方法作为回调参数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"));
如果你使用PHP 5.6+,你也可以使用splat
运营商,而不是使用call_user_func_array
,例如
$stmt->bind_param($types, ...$request['params']);
这将是整洁为您的使用情况,因为有一个初始参数bind_param
,否则必须shift
-ed到的参数数组的前面。
我没有使用5.6+!因为它只是一个usbwebserver上的测试,而且这个5.2,但如果我有这个版本,你的解决方案将是最好的 –
请阅读[文档](http://php.net/call_user_func_array)关于您正在使用的功能。请注意,这些示例显示了如何通过此函数正确调用对象方法。 –