我想创建一个“常规”函数来处理PHP中所有准备好的语句。
即,我想要一个像
这样的功能function doStmt($sqlQuery,$types,$arg1,...,$argN) {
(...)
if(!$stmt = $mysqli->prepare($sqlQuery)) //error blah blah;
if (!$stmt->bind_param($types, $arg1,...,$argN)) //error ...;
if (!$stmt->execute()) //error ...;
$stmt->close();
return true;
}
我的问题主要是如何动态设置doStmt
函数的N个参数,然后如何将它们传递给bind_param
。
我之所以需要这样的功能是因为我不需要检查错误&我每次都使用准备好的声明关闭。
答案 0 :(得分:1)
试试这个:
function doStmt() {
// You could use func_num_args() get how many arguments do you have...
$argList = func_get_args();
$sqlQuery = array_shift($argList);
$types = array_shift($argList);
// echo $sqlQuery;
// echo $types;
// print_r($argList);
$stmt = $mysqli->prepare($sqlQuery);
call_user_func_array(array($stmt, 'bind_param'), $argList);
}
doStmt('select ... ? ... ? ... ? ...', 'sss', 'string1', 'string2', 'string3');