将数组转换为逗号分隔的变量列表

时间:2017-12-13 12:58:32

标签: php mysqli

参数化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();
}

1 个答案:

答案 0 :(得分:0)

那你为什么要为个别命名的变量做这个呢?不要使用extract(),这就是PHP ...(splat)运算符的设计用于

$paramTypes = str_repeat("s",count($parametersArray));

mysqli_stmt_bind_param($stmt,$paramTypes, ...$parametersArray);

虽然您可能希望为空数组添加一些处理