Controlar excepciones de mysql desde php
Publicado por Matias (4 intervenciones) el 07/05/2020 02:47:27
Hola a todos, soy nuevo en esta pagina y concurro a ustedes para saber como puedo capturar una exepcion de mysql por ejemplo de valor duplicado y enviar un aviso a la pagina.
El codigo de insercion a la bd es la siguiente.
al momento de insertar un valor duplicado, salta la excepcion y me interrumpe con el siguiente mensaje
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'ventas-1' for key 'name'' in C:\xampp\htdocs\Framework-mvc\app\libreries\DataBase.php:64 Stack trace: #0 C:\xampp\htdocs\Framework-mvc\app\libreries\DataBase.php(64): PDOStatement->execute() #1 C:\xampp\htdocs\Framework-mvc\app\models\task.php(60): DataBase->execute() #2 C:\xampp\htdocs\Framework-mvc\app\controllers\tasks.php(32): task->insertTask(Array) #3 [internal function]: tasks->create() #4 C:\xampp\htdocs\Framework-mvc\app\libreries\Core.php(42): call_user_func_array(Array, Array) #5 C:\xampp\htdocs\Framework-mvc\public\index.php(5): Core->__construct() #6 {main} thrown in C:\xampp\htdocs\Framework-mvc\app\libreries\DataBase.php on line 64
cual podria ser la solucion? desde ya gracias
El codigo de insercion a la bd es la siguiente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function insertTask(&$data){
try {
$this->db->query('call sp_insert_task(:n, :idr)');
$this->db->bind(':n', $data['name']);
$this->db->bind(':idr', $data['id_role']);
} catch (Exception $e) {
$this->db->error = $e->getMessage();
return $this->db->error;
}
if ($this->db->execute()) {
$data['id_task'] = $this->db->lastId();
return true;
}else{
return false;
}
}
al momento de insertar un valor duplicado, salta la excepcion y me interrumpe con el siguiente mensaje
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'ventas-1' for key 'name'' in C:\xampp\htdocs\Framework-mvc\app\libreries\DataBase.php:64 Stack trace: #0 C:\xampp\htdocs\Framework-mvc\app\libreries\DataBase.php(64): PDOStatement->execute() #1 C:\xampp\htdocs\Framework-mvc\app\models\task.php(60): DataBase->execute() #2 C:\xampp\htdocs\Framework-mvc\app\controllers\tasks.php(32): task->insertTask(Array) #3 [internal function]: tasks->create() #4 C:\xampp\htdocs\Framework-mvc\app\libreries\Core.php(42): call_user_func_array(Array, Array) #5 C:\xampp\htdocs\Framework-mvc\public\index.php(5): Core->__construct() #6 {main} thrown in C:\xampp\htdocs\Framework-mvc\app\libreries\DataBase.php on line 64
cual podria ser la solucion? desde ya gracias
Valora esta pregunta


0