Foros del Web » Programando para Internet » PHP »

Personalizar errores mysqli

Estas en el tema de Personalizar errores mysqli en el foro de PHP en Foros del Web. hola a todos, Tengo una base de datos a la cual me conecto a traves de la funcion mysqli y estoy tratando de personalizar errores ...
  #1 (permalink)  
Antiguo 17/12/2015, 04:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 208
Antigüedad: 17 años
Puntos: 2
Personalizar errores mysqli

hola a todos,

Tengo una base de datos a la cual me conecto a traves de la funcion mysqli y estoy tratando de personalizar errores para que el cliente no tenga que ver errores raros los cuales no comprenda. Por ejemplo cuando muestra que esta duplicado el registro, el error aparece en ingles como duplicate y una frase bastante rara que es poco entendible.

He estado mirando en la misma funcion Mysqli y he visto que hay varios metodos para mostrar errores y segun esta pagina:

http://php.net/manual/es/book.mysqli.php

He visto una que creo que es con la que podria trabajar que es:

mysqli::$connect_errno

Esta segun he leido muestra el numero del error, pero al ponerla a funcionar veo que solo me muestra el error 0 con diferentes errores por lo cual no puedo llegar a hacer nada... a ver si me pudierais dar un consejillo para encontrar alguna solucion

Gracias de antemano y un saludo!
  #2 (permalink)  
Antiguo 17/12/2015, 04:44
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: Personalizar errores mysqli

Del manual
http://php.net/manual/es/mysqli.connect-errno.php

Valores devueltos

Un código de error para la ultima llamada a mysqli_connect(), si ha fallado. cero significa que no ha ocurrido ningún error.
  #3 (permalink)  
Antiguo 17/12/2015, 07:20
 
Fecha de Ingreso: noviembre-2007
Mensajes: 208
Antigüedad: 17 años
Puntos: 2
Respuesta: Personalizar errores mysqli

Ah pero yo lo que quiero es que para cuando haga un insert into poder controlar el error que da y personalizarlo a mi gusto, por ejemplo si la clave DNI esta duplicada pues que pueda poner

El DNI ya existe

O si es una foreign key poner el mensaje:

El DNI no existe, necesita crearlo

Y cosas asi, para la conexion la verdad que no me interesa
  #4 (permalink)  
Antiguo 17/12/2015, 07:56
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: Personalizar errores mysqli

Para eso tienes que hacer comparaciones comprobando su existencia en la bd
Pero eso no son errores ni de conexión, ni de sql.

Para lo que quieres, deberás buscar si existe en la bd:
Código PHP:
Ver original
  1. $dni='12345678';
  2.  
  3. $sql_dni=mysqli_query ( $conexion, "select * from MiTabla where dni='$dni' ");
  4. $cantidad_registros = mysqli_num_rows($sql_dni);
  5.  
  6. if (  $cantidad_registros  > 0 ) {
  7. echo 'ya existe en la bd';
  8. }else {
  9. echo 'no existe en la bd';
  10. }

Algo así sería.
Puede que tenga algún error, escribo desde el móvil y de cabeza. Pero para que te hagas una idea creo que vale.

Un saludo.
  #5 (permalink)  
Antiguo 17/12/2015, 13:58
Avatar de wunderwaffen077  
Fecha de Ingreso: marzo-2014
Mensajes: 45
Antigüedad: 10 años, 8 meses
Puntos: 3
Respuesta: Personalizar errores mysqli

Hola barrio,
yo lo hago de esta forma. Pero lo guardo en una variable de sesion, que puede ser reemplazado por lo que tu quieras.

- Creo un arreglo y verifico si existe algun error: $resultado['mysqli_error']
- Luego, pregunto si tiene un error de tipo duplicidad de datos: ($resultado['mysqli_errno']=='1062')
y lo retorno el mensaje: 'ERROR: Registro existente.';


Código PHP:
 $sql3="INSERT INTO msebol010 VALUES ('1','Pendejete')";

   
$rs mysqli_query($link,$sql3);

  
$resultado = array();  
  if(
$rs) {
     
$resultado = array("mysqli_error" => false,
                  
"mysqli_insert_id" => mysqli_insert_id($link),
                  
"mysqli_affected_rows" => mysqli_affected_rows($link),
                  
"mysqli_info" => mysqli_info($link)
                );
     
mysqli_close($link);
  }else{
    
$resultado = array( "mysqli_error" => mysqli_error($link),"mysqli_errno" => mysqli_errno($link) );
  }

 
$_SESSION['display']='Registro ingresado correctamente.';

  if(
$resultado['mysqli_error'] ) {

    
$_SESSION['display']='ERROR:'.$resultado['mysqli_errno'];
    if (
$resultado['mysqli_errno']=='1062') {

      
$_SESSION['display']='ERROR: Registro existente.';

      
header("location:mfun_multifuncional.php");exit();

    }     

  } 
Espero les sirva.

Etiquetas: errores, mysql, mysqli, personalizar, registro, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:06.