PDO bindParam - 最后插入的值
PDO bindParam - last value inserted in all
我有这个用于插入数据库的代码:
public function insert($table,$parameters=array()){
$param="";
$val=array();
$insert= str_replace(':', '', array_keys($parameters)); //remove :
//Build Query
$query="INSERT INTO {$this->dbinfo["prefix"]}$table";
if(is_array($insert)){
$query.=' (`'.implode("`,`",$insert).'`) VALUES (:'.implode(', :',$insert).')';
$result = $this->db->prepare($query);
foreach($parameters as $key=>$param) {
$result->bindParam($key, $param);
}
}
$result->execute();
if($err=$this->error_message($this->db->errorInfo())) {
$this->query=strtr($query,$parameters);
$this->db_error=$err;
exit;
}
++$this->num_queries;
$last_id = FALSE;
$last_id = $this->db->lastInsertId();
return $last_id;
}
错误处理:
private function error_message($error){
if(!empty($error[2])){
return $error[2];
}
return FALSE;
}
调用示例可能如下所示:
$this->db->insert("log_url",array(":name"=>"url",":urlid"=>15,":type"=>0));
上面的示例在数据库行中插入最后一个值,在本例中为 0。当我删除类型时,它全部填充为 15。等等...
insert函数的某处出错了,我找不到。
任何信息都有帮助。谢谢。
已回答:
缺少执行
$result->execute();
我有这个用于插入数据库的代码:
public function insert($table,$parameters=array()){
$param="";
$val=array();
$insert= str_replace(':', '', array_keys($parameters)); //remove :
//Build Query
$query="INSERT INTO {$this->dbinfo["prefix"]}$table";
if(is_array($insert)){
$query.=' (`'.implode("`,`",$insert).'`) VALUES (:'.implode(', :',$insert).')';
$result = $this->db->prepare($query);
foreach($parameters as $key=>$param) {
$result->bindParam($key, $param);
}
}
$result->execute();
if($err=$this->error_message($this->db->errorInfo())) {
$this->query=strtr($query,$parameters);
$this->db_error=$err;
exit;
}
++$this->num_queries;
$last_id = FALSE;
$last_id = $this->db->lastInsertId();
return $last_id;
}
错误处理:
private function error_message($error){
if(!empty($error[2])){
return $error[2];
}
return FALSE;
}
调用示例可能如下所示:
$this->db->insert("log_url",array(":name"=>"url",":urlid"=>15,":type"=>0));
上面的示例在数据库行中插入最后一个值,在本例中为 0。当我删除类型时,它全部填充为 15。等等... insert函数的某处出错了,我找不到。
任何信息都有帮助。谢谢。
已回答:
缺少执行
$result->execute();