imediasun
Новичок
Возникает следующая ошибка
SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters#0 /var/www/clients/client1/web28/web/protected/Main.php(72): PDOStatement->execute(Array) #1 /var/www/clients/client1/web28/web/protected/models/User.php(59): Main->update_obj('users', 'activation_code', Array, Array, '0096deb29bf3199...') #2 /var/www/clients/client1/web28/web/protected/UsersController.php(82): User->confirm_registration('0096deb29bf3199...') #3 [internal function]: UsersController->activate('0096deb29bf3199...') #4 /var/www/clients/client1/web28/web/index.php(26): call_user_func_array(Array, Array) #5 {main}
Что здесь не так, вродебы все по мануалу
SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters#0 /var/www/clients/client1/web28/web/protected/Main.php(72): PDOStatement->execute(Array) #1 /var/www/clients/client1/web28/web/protected/models/User.php(59): Main->update_obj('users', 'activation_code', Array, Array, '0096deb29bf3199...') #2 /var/www/clients/client1/web28/web/protected/UsersController.php(82): User->confirm_registration('0096deb29bf3199...') #3 [internal function]: UsersController->activate('0096deb29bf3199...') #4 /var/www/clients/client1/web28/web/index.php(26): call_user_func_array(Array, Array) #5 {main}
Что здесь не так, вродебы все по мануалу
PHP:
$data = array(
'activated' => 1
);
foreach($data as $key=>$val){
$fields[]=$key;
}
$obj=$activation_code;
$result =parent::update_obj($table_name,$obj_id,$fields,$data,$obj);
function pdoSet($fields, &$values, $source = array()) {
$set = '';
$values = array();
if (!$source) $source = &$_POST;
foreach ($fields as $field) {
if (isset($source[$field])) {
$set.="`".str_replace("`","``",$field)."`". "=:$field, ";
$values[$field] = $source[$field];
}
}
return substr($set, 0, -2);
}
function update_obj($table_name,$obj_id,$fields,$data,$obj){
print('update_obj');
$sql = "UPDATE ".$table_name." SET ".$this->pdoSet($fields,$values,$data)." WHERE ".$obj_id." = ?";
$stm = $this->conn()->prepare($sql);
$stm->execute(array($obj));
}