PDO准备语句与参数数组
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; }