Problème de gestion des erreurs MySQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de gestion des erreurs MySQL

Re: Problème de gestion des erreurs MySQL

par Crygamers » 10 juil. 2012, 18:48

Si c'est moi qui a codé le reste mais j'ai appris le PHP à ma façon du coup il y a certains trucs que je connais pas encore. Bon merci pour le code. :)

Re: Problème de gestion des erreurs MySQL

par xTG » 09 juil. 2012, 19:53

J'en conclu donc que tu n'as pas codé le reste je me trompe ?
$res = @$DB->real_query('SELECT RESULT FROM es_test');
if( $res === true ){
  // ok
}else{
  // erreur
}

Re: Problème de gestion des erreurs MySQL

par Crygamers » 09 juil. 2012, 15:37

Tu aurais un code stp ? Je ne sais pas trop comment faire là... :|

Re: Problème de gestion des erreurs MySQL

par xTG » 09 juil. 2012, 15:00

Normal, si tu ne fais pas le while tu n'as aucune gestion d'erreur.
Il faut vérifier que la fonction real_query() fait quelque chose.

Re: Problème de gestion des erreurs MySQL

par Crygamers » 09 juil. 2012, 13:35

Je n'ai plus d'erreur avec ce code mais tout de même une page blanche.

Re: Problème de gestion des erreurs MySQL

par xTG » 09 juil. 2012, 11:01

@$DB->real_query('SELECT RESULT FROM es_test');

Re: Problème de gestion des erreurs MySQL

par Crygamers » 08 juil. 2012, 21:42

Merci de la réponse. :) Bon j'ai mis @ devant mysqli_connect, mais ensuite l'erreur venait de real_query et là si je met un @ j'ai l'erreur Parse error: syntax error, unexpected '@', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in [...]. J'ai donc essayé avec error_reporting(0) mais là ça m'affiche une page blanche mais sans me rediriger.

Re: Problème de gestion des erreurs MySQL

par xTG » 08 juil. 2012, 21:24

Un header doit être utilisé avant tout envoi au navigateur.
Donc si un affiche survient le header() ne se ferra pas.

Rajoutes un @ devant la fonction pour éviter l'affichage de l'erreur.

Problème de gestion des erreurs MySQL

par Crygamers » 08 juil. 2012, 19:57

Bonjour,

J'ai créer une fonction de connexion à une base de données (en utilisant mysqli), qui fonctionne parfaitement. Sauf pour la gestion des erreurs : lorsqu'une erreur se produit, une redirection est censée être effectuée vers une page d'erreur dédiée. Mais ça ne me redirige pas et ça affiche simplement une erreur normale. Voilà mon code :
<?php
	function DB_Connect($DB_Host, $DB_User, $DB_Password, $DB_Database)
	{
		if(isset($DB_Host) AND isset($DB_User) AND isset($DB_Password) AND isset($DB_Database))
		{
			if(!empty($DB_Host) AND !empty($DB_User) AND !empty($DB_Password) AND !empty($DB_Database))
			{
				$DB = mysqli_connect($DB_Host, $DB_User, $DB_Password, $DB_Database);
				if(!isset($DB))
				{
					$_SESSION['ERROR_CODE'] = base64_encode('DB_CONNECT.FCN#DB-CONNECT');
					REDIRECT_Header('ERROR');
				}
				else
				{
					$DB->real_query('SELECT RESULT FROM es_test');
					$DB_ANSWER = $DB->use_result();
					while($DB_DATA = $DB_ANSWER->fetch_assoc())
					{
						if(!isset($DB_DATA['RESULT']) OR $DB_DATA['RESULT'] != 'success')
						{
							$_SESSION['ERROR_CODE'] = base64_encode('DB_CONNECT.FCN#DB-CONNECT');
							REDIRECT_Header('ERROR');
						}
					}
				}
			}
			else
			{
				$_SESSION['ERROR_CODE'] = base64_encode('DB_CONNECT.FCN#EMPTY-ARGUMENTS');
				REDIRECT_Header('ERROR');
			}
		}
		else
		{
			$_SESSION['ERROR_CODE'] = base64_encode('DB_CONNECT.FCN#ISSET-ARGUMENTS');
			REDIRECT_Header('ERROR');
		}
	}
?>
Je précise que la fonction REDIRECT_Header fonctionne parfaitement (je l'ai testée), ce n'est donc pas elle qui pose problème. Je ne sais donc pas s'il me manque une partie de code, ou si c'est un problème dans mon code...

J'espère que vous pourrez m'aider, merci d'avance !

PS : Comme vous devez vous en douter, j'ai bien entendu créé une table es_test avec une colonne RESULT une entrée success.