参数化mysqli查询:
尝试创建一个函数来处理可变数量的bind_param参数,作为数组传递给函数。
switch语句只显示了三个,但你可以想象它看起来有多么愚蠢。
我必须遗漏一些非常明显的东西。救命啊!
function secureQuery($query,$parametersArray){
$stmt = mysqli_prepare($_GLOBAL['db'],$query);
$paramsCount = extract($parametersArray, EXTR_PREFIX_ALL, "param");
$paramTypes = str_repeat("s",extract($parametersArray, EXTR_PREFIX_ALL, "param"));
switch($paramsCount){
case 1:
mysqli_stmt_bind_param($stmt,$paramTypes, $param_0);
break;
case 2:
mysqli_stmt_bind_param($stmt,$paramTypes, $param_0, $param_1);
break;
case 3:
mysqli_stmt_bind_param($stmt,$paramTypes, $param_0, $param_1, $param_2);
break;
}
mysqli_stmt_execute($stmt);
return $stmt->get_result();
}
答案 0 :(得分:0)
那你为什么要为个别命名的变量做这个呢?不要使用extract()
,这就是PHP ...
(splat)运算符的设计用于
$paramTypes = str_repeat("s",count($parametersArray));
和
mysqli_stmt_bind_param($stmt,$paramTypes, ...$parametersArray);
虽然您可能希望为空数组添加一些处理