How to display error when doing query?

6

I have the following problem, this query is not inserting data into the database:

$inserir2 = mysqli_query($link, "INSERT INTO cliques (emailusuario, brasil, lucrobrasil, portugal, lucroportugal, suica, lucrosuica, belgica, lucrobelgica, australia, lucroaustralia, africadosul, lucroafricadosul, franca, lucrofranca, mexico, lucromexico, tailandia, lucrotailandia, novazelandia, lucronovazelandia, colombia, lucrocolombia, argentina, lucroargentina, india, lucroindia, italia, lucroitalia, reinounido, lucroreinounido, outrospaises, lucrooutrospaises) VALUES ('$email', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000', '0', '0.000')");

I remember there was a way to show the concrete error.

How can I make her show me a mistake, to tell me which column I'm "wrong"?

    
asked by anonymous 21.07.2016 / 00:24

1 answer

13

The usual way is:

$inserir2 = mysqli_query( $link, $sql ) or die( mysqli_error( $link ) );

If you need something more elaborate, you can get the error code and its description:

$inserir2 = mysqli_query( $link, $sql );
if( !$inserir2 ) {
   echo 'Código de erro:'.mysqli_errno( $link ).'<br>';
   echo 'Mensagem de erro:'mysqli_error( $link ).'<br>';
}

Now, this makes more sense when doing the debug of the code.

Probably in a real application, you should not play the error on the screen , but log on to the system, or record an internal message to the website developers, after all, it does not make sense and is not advantage giving your application's internal details to an end user ( or potential attacker / attacker ).

See an example that writes a message in log of PHP:

if( ! ($inserir2 = mysqli_query( $link, $sql )) ) {
   error_log( 'Erro ao fazer query:'.mysqli_error( $link ) );
   // Aqui você deve fazer algo que seja adequado para o contexto,
   // dependendo da sua aplicação. O 'die' é meramente ilustrativo,
   // e não vai encerrar corretamente seu HTML nem manter um layout
   // adequado na página. Num caso real, execute o cleanup necessário
   // para encerrar o script corretamente. 
   die( 'Ocorreu um problema ao atender sua solicitação' );
} 
  

link

Here's another example of a different way of handling errors based on numeric codes .

    
21.07.2016 / 00:32