【问题标题】:PDO bindParam with multidimensional arrays具有多维数组的 PDO bindParam
【发布时间】:2014-10-05 01:25:18
【问题描述】:

我正在开发一个函数来对以下形式的数组进行 PDO 更新:insert_arrays_values=>([0]=>(field_name=>value, field_name2=>$value2),[1]=>(field_name =>value, field_name2=>$value2))

我这样做是为了对我的表进行批量插入(以及另一个函数中的更新)。

function sqlinsert($table, $insert_values_arrays){
        $query = "INSERT INTO $table(";
        foreach($insert_values_arrays[0] as $key => $val){
            $query .= $key.',';
        }
        $query = rtrim($query, ',');
        $query .= ") VALUES(";
        foreach$insert_values_arrays[0] as $key => $val){
            $query .= ':'.$key.','
        }
        $query = rtrim($query, ',');
        $query .= " )";
        $stm = $db->prepare($query);
        foreach ($values_array as $column => &$value){
            $stm->bindParam(':'.$column, $value);
        }
        foreach($insert_values_arrays as $values_array){
            $stm->execute();
        }           
}

我的问题是,当我在 insert_values_arrays[0] 等的 foreach 中执行()时,我需要直接在 bindParam 中引用“$value”,还是使用 $values_array 执行 foreach 循环因为我有它来设置唯一执行操作的值?

【问题讨论】:

    标签: pdo sqlbindparameter


    【解决方案1】:

    好的,所以我以一种更简单的方式做到了这一点,避免使用绑定参数并将数组直接传递给 execute(),如下所示:

    function sqlinsert($table, $insert_values_arrays){
        $db = initializePDO();
        $query = "INSERT INTO $table(";
        foreach($insert_values_arrays[0] as $key => $val){
            $query .= $key.',';
        }
        $query = rtrim($query, ',');
        $query .= ") VALUES(";
        foreach($insert_values_arrays[0] as $key => $val){
            $query .= ':'.$key.',';
        }
        $query = rtrim($query, ',');
        $query .= ")";
        $stm = $db->prepare($query);
        foreach($insert_values_arrays as $values_array){
            $stm->execute($values_array);
        }
    //working           
    }
    

    以这种方式避免 bindParam 是否有任何安全隐患?

    【讨论】:

      猜你喜欢
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 2011-04-13
      • 2011-01-11
      • 2014-08-20
      • 2014-07-28
      相关资源
      最近更新 更多