PDO准备语句与参数数组

25 浏览
0 Comments

PDO准备语句与参数数组

我卡住了。我花了两天的时间查找了所有我能找到的参考资料,但是我无法弄清楚为什么这不起作用!我得到了错误信息:“从空值创建默认对象。”以下是我的SQL语句和参数数组。

$sql_insert = "
INSERT INTO vrm_vrd_submission_tbl (vrm_vrd_nmbr_id, vrm_vrd_sub_type_id, vrm_vrd_sub_date, vrm_vrd_min_form_date, vrm_vrd_sub_quantity, county_id, pers_emp_pre_id, election_general_info_id, vrm_vrd_sub_submitter_name, vrm_vrd_compliance_rules_id)
VALUES(:vrm_vrd_nmbr_id,
:vrm_vrd_sub_type_id,
:vrm_vrd_sub_date,
:vrm_vrd_min_form_date,
:vrm_vrd_sub_quantity,
:county_id,
:pers_emp_pre_id,
:election_general_info_id,
:vrm_vrd_sub_submitter_name,
:vrm_vrd_compliance_rules_id)
";
$sql_parms=array(":vrm_vrd_nmbr_id"=>$vrm_vrd_nmbr_id, ":vrm_vrd_sub_type_id "=>$data['vrm_vrd_sub_type_id'], ":vrm_vrd_sub_date"=>trim($data['vrm_vrd_sub_date']), ":vrm_vrd_min_form_date"=>trim($data['vrm_vrd_min_form_date']), ":vrm_vrd_sub_quantity"=>trim($data['vrm_vrd_sub_quantity']), ":county_id "=>$data['county_id'],":pers_emp_pre_id "=>$data['pers_emp_pre_id'], ":election_general_info_id"=>$election_general_info_id, ":vrm_vrd_sub_submitter_name"=>$vrm_vrd_sub_submitter_name, ":vrm_vrd_compliance_rules_id"=> $vrm_vrd_compliance_rules_id);
$ret_val=$db->db_bound_query($sql_insert, $sql_parms);

在我的数据库类中调用的方法:

public function db_bound_query($qry_str, $parms_array){
    $log = new error_log_class;
    $db_conn = self::_connect();
    if(!$exec_str= $db_conn->prepare($qry_str)){    
        $log->save_to_log($qry_str,__LINE__,__FILE__,"Failed to perpare.");     
    }
    $val="";
    foreach($parms_array as $parm ->$val){
        $exec_str->bindParam($parm,$val);
    }       
    $res=$exec_str->execute();
    $results= $exec_str->fetchAll(PDO::FETCH_ASSOC);    
}

编辑:

根据@iamsleepy和@MrCode的建议,我将此方法更改如下。但是我得到了最初追踪的错误,即“无效的参数编号”。

public function db_bound_query($qry_str, $parms_array){
    $log = new error_log_class;
    $db_conn = self::_connect();
    if(!$exec_str= $db_conn->prepare($qry_str)){    
        $log->save_to_log($qry_str,__LINE__,__FILE__,"Failed to perpare.");     
    }
    $res=$exec_str->execute($parms_array );
    $results= $exec_str->fetchAll(PDO::FETCH_ASSOC);    
    return $results;
}

0
0 Comments

问题原因:参数名称末尾存在一个空格。

解决方法:去除参数名称末尾的空格。

0