begin process at 2012 05 27 18:22:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > REQUETE MYSQL SIMPLE AVEC SAUVEGARDE

REQUETE MYSQL SIMPLE AVEC SAUVEGARDE


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Niveau :Débutant Date de création :03/02/2004 Date de mise à jour :14/05/2004 12:58:16 Vu / téléchargé :5 631 / 400

Auteur : Samiby

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

C'est une fonction "tout en un 1".
Il se connecte, effectue la/les requête(s), et se déconnecte, le tout avec gestion des erreurs.
Le but de se reconnecter à chaque groupe de requêtes et de se déconnecter est de limiter au maximum le temps de connexion (souvent, le nombre de connections simultanées est limité).
Il permet aussi de faire des sauvegardes. Il sauvegarde touts les requêtes "INSERT" et "UPDATE" dans un fichier texte. L'avantage est que s'il vous perdez votre base de données, vous avez juste à effectuer la totalité du fichier texte en requête (dans PHPMyAdmin, il y a une option pour ça).

Source

  • <?php
  • function query_db($query){
  • //On se connecte sur le serveur
  • $connect=mysql_connect('leserveur','lelogin','lemotdepasse') or die("Impossible de se connecter sur le serveur : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
  • //On séléctionne la BDD
  • mysql_select_db('labase') or die("Impossible de se connecter à la base de données : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
  • //Si on a un tableau avec plusieurs requêtes
  • if(is_array($query)){
  • //On effectue chaque requête
  • for( $i=0 ; $i < count($query) ; $i++ ){
  • $result[$i]=@mysql_query($query[$i]) or die ("Impossible d'effectuer la requête : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
  • //Si la requête est d'un type "INSERT"
  • if(substr($query[$i],0,6)=="INSERT"){
  • //On enregistre la valeur AUTO_INCREMENT attribuée
  • $result[$i]=mysql_insert_id();
  • }
  • }
  • }//On effectues la requête
  • $result=mysql_query($query) or die ("Impossible d'effectuer la requête : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
  • //Si la requête est d'un type "INSERT"
  • if(substr($query,0,6)=="INSERT"){
  • //On enregistre la valeur AUTO_INCREMENT attribuée
  • $result=mysql_insert_id();
  • }
  • //On se déconnecte
  • mysql_close($connect);
  • //Si ce n'est pas un tableau
  • if( !is_array($query)){
  • //Si la requête est une 'INSERT' ou une 'UPDATE'
  • if(substr($query,0,6)=="INSERT" or substr($query,0,6)=="UPDATE" or substr($query,0,6)=="DELETE"){
  • //Si le fichier de sauvegarde existe
  • if(file_exists("hist_req_mysql.txt")){
  • //On l'ouvre en se plaçant à la fin
  • $fp=fopen("hist_req_mysql.txt","a");
  • //Sinon
  • }else{
  • //On le crée
  • $fp=fopen("hist_req_mysql.txt","w");
  • }
  • //On y inscrit le texte
  • $text="$query".";\n";
  • fwrite($fp,$text);
  • //On ferme le fihier
  • fclose($fp);
  • //sinon (c'est un tableau)
  • } else {
  • for($i ; $i < count($query) ; $i++) {
  • //Si la requête est une 'INSERT' ou une 'UPDATE'
  • if(substr($query,0,6)=="INSERT" or substr($query,0,6)=="UPDATE" or substr($query,0,6)=="DELETE"){
  • //Si le fichier de sauvegarde existe
  • if(file_exists("hist_req_mysql.txt")){
  • //On l'ouvre en se plaçant à la fin
  • $fp=fopen("hist_req_mysql.txt","a");
  • //Sinon
  • }else{
  • //On le crée
  • $fp=fopen("hist_req_mysql.txt","w");
  • }
  • //On y inscrit le texte
  • $text="$query".";\n";
  • fwrite($fp,$text);
  • //On ferme le fihier
  • fclose($fp);
  • }
  • }
  • //on renvoie le résultat (tableau ou simple valeur)
  • return $result
  • }
  • ?>
<?php
function query_db($query){
	//On se connecte sur le serveur
	$connect=mysql_connect('leserveur','lelogin','lemotdepasse') or die("Impossible de se connecter sur le serveur : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
	//On séléctionne la BDD
	mysql_select_db('labase') or die("Impossible de se connecter à la base de données : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
	//Si on a un tableau avec plusieurs requêtes
	if(is_array($query)){
	    //On effectue chaque requête
	    for( $i=0 ; $i < count($query) ; $i++ ){
	       $result[$i]=@mysql_query($query[$i]) or die ("Impossible d'effectuer la requête : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
	
	      //Si la requête est d'un type "INSERT"
	      if(substr($query[$i],0,6)=="INSERT"){
	         //On enregistre la valeur AUTO_INCREMENT attribuée
	         $result[$i]=mysql_insert_id();
	      }
	    }
	}//On effectues la requête
	$result=mysql_query($query) or die ("Impossible d'effectuer la requête : \n<br>".mysql_errno()." : ".mysql_error()."\n<br>");
	//Si la requête est d'un type "INSERT"
	if(substr($query,0,6)=="INSERT"){
		//On enregistre la valeur AUTO_INCREMENT attribuée
		$result=mysql_insert_id();
	}
	//On se déconnecte
	mysql_close($connect);
	//Si ce n'est pas un tableau
	if( !is_array($query)){
	  //Si la requête est une 'INSERT' ou une 'UPDATE'
	  if(substr($query,0,6)=="INSERT" or substr($query,0,6)=="UPDATE" or substr($query,0,6)=="DELETE"){
	  	  //Si le fichier de sauvegarde existe
		  if(file_exists("hist_req_mysql.txt")){
		  	//On l'ouvre en se plaçant à la fin
			$fp=fopen("hist_req_mysql.txt","a");
		  //Sinon
		  }else{
			//On le crée
			$fp=fopen("hist_req_mysql.txt","w");
		  }
		  //On y inscrit le texte
		  $text="$query".";\n";
		  fwrite($fp,$text);
		  //On ferme le fihier
		  fclose($fp);
	    //sinon (c'est un tableau)
	    } else {
	         for($i ; $i < count($query) ; $i++) {
	            //Si la requête est une 'INSERT' ou une 'UPDATE'
	            if(substr($query,0,6)=="INSERT" or substr($query,0,6)=="UPDATE" or substr($query,0,6)=="DELETE"){
	  	  //Si le fichier de sauvegarde existe
		  if(file_exists("hist_req_mysql.txt")){
		  	//On l'ouvre en se plaçant à la fin
			$fp=fopen("hist_req_mysql.txt","a");
		  //Sinon
		  }else{
			//On le crée
			$fp=fopen("hist_req_mysql.txt","w");
		  }
		  //On y inscrit le texte
		  $text="$query".";\n";
		  fwrite($fp,$text);
		  //On ferme le fihier
		  fclose($fp);

	              }
	   }
	//on renvoie le résultat (tableau ou simple valeur)
	return $result
	
}
?>

 Conclusion

Il ne vous reste plus qu'à changer les données de connexions.
Cette fonction se comporte comme mysql_query, vu que c'est ce qu'elle retourne.
Il ne faut pas oublier de mettre :
include 'fonctions.php'
sur chaque page qui en aura besoin.

Dernière MAJ (14/05/2004):
Possibilité d'effectuer plusieurs requêtes à la fois.
Il faut transmettre les requêtes par un tableau
ex: query_db( array("INSERT INTO x VALUES( 'y' ,'z' , '...' ) " , "INSERT INTO y VALUES ('28' , '29' , '30' , '...' ) " ) );

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip CLASSE POUR FORMULAIRE HTML : GÉNÉRATION ET RÉCUPÉRATION DES...
Source avec Zip GESTION DES ERREURS
Source avec Zip BRUTEFORCE AVEC GESTION DU TIMEOUT
DOUBLE ASTUCE POUR LES LIENS & AUTRES(À PARTIR DE L'URL)
Source avec Zip UN LIVRE D'OR SANS MYSQL, MAIS AVEC TXT

 Sources de la même categorie

Source avec Zip ORM : DAO, ACTIVERECORD ET DBLIST par Reldan
Source avec une capture CET EXTRAIT PERMET D'AJOUTER DANS UN TABLEAU UNE AGRÉGATION ... par Denis007
EXPORT DE BASE AU FORMAT CSV par remib74
Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier

Commentaires et avis

Commentaire de Samiby le 03/02/2004 23:08:23

J'ai oublié un détail:
"mysql_insert_id()" ne fonctionne pas vu que on a déjà déconnecté.
Quelqu'un a une idée ?

Commentaire de mfaraday le 05/02/2004 10:23:12

Salut,

Pourquoi ne pas te déconnecter une fois le fichier rempli ? dans ce cas tu peux utiliser mysql_insert_id(). Je ne pense pas que cela soit préjudiciable au niveau temps déexécution ou au niveau ressource...

Max

Commentaire de Samiby le 05/02/2004 11:15:33

L'intérêt est que chez certains hébergeurs, le nombre de connexions simultannées à la base de données est limité.
Mais c'est bon, j'ai trouvé et modifié le code en conséquence.

Commentaire de tolu le 04/06/2004 11:35:57

Merci bonne idée et utile donc 10/10

Commentaire de jackie0000 le 22/03/2007 10:24:34

assez utile comme fonction je la cherchait en fait
merci

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales