MySQL - No despliega error el catch cuando hay datos duplicado

 
Vista:

No despliega error el catch cuando hay datos duplicado

Publicado por Carlos (2 intervenciones) el 28/05/2015 07:09:58
Hola, estoy realizando un formulario en php que me inserte datos a unas tablas en una base de datos, en una de estas tablas tengo un campo que es único el cual no puede repetirse y si intento insertar en esa tabla el mismo dato me envía un error lo cual es correcto, el problema que tengo es que en mi formulario tengo mi función para insertar y utilizo try y catch para la ejecución y captura el error, cuando intento que me muestre un mensaje de error al intentar insertar un dato ya existente en la tabla no me muestra nada.

Les dejo el código para que lo chequen y espero puedan ayudarme.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function query_insprueba($qin){
try{
echo inicio del insert , <br> ;
$query = $qin->prepare("INSERT INTO " .TB_REG_USER. " (names, last_name, second_surname, email) VALUES (?,?,?,?)");
print_r($query);
echo <br> ;
$query->bindParam(1,$nameform= Carlos );
$query->bindParam(2,$lastnameform= Perez );
$query->bindParam(3,$lastnamemform= Horta );
$query->bindParam(4,$emailform= falcon6_5@hotmail.com );
if($query ->execute()){
return 1;
}
} catch (PDOException $ex) {
print "¡Error!: " . $ex->getCode() . "<br/>";
return 0;
die();
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

No despliega error el catch cuando hay datos duplicado

Publicado por xve (1151 intervenciones) el 28/05/2015 08:39:12
Hola Carlos, el problema que tienes en tu código, es que no devuelve un error el PHP cuando intentas añadir un registro que ya esta duplicado... por eso no se ejecuta el catch... se ejecutaría, por ejemplo, si no consigue ejecutar la consulta sql porque no hay conexión con la base de datos.

Para solucionar tu problema, seria algo así:
1
2
3
4
5
if($query ->execute()){
    return 1;
}else{
    echo "No se ha insertado";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar