Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/10/2007, 08h56   #1
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
Par défaut optimiser vérification de doublons

salut,
J'ai une page php qui insère des données dans une base mysql.
avant l'insertion, je fais une requête (fonction checkEntry) pour être sûr que les données n'existent pas déjà dans la base.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
	FUNCTION saveSignature(){
		$nom = mysql_real_escape_string($_POST['nom']);
		$prenom = mysql_real_escape_string($_POST['prenom']);
		$adresse = mysql_real_escape_string($_POST['adresse']);
		$prof = mysql_real_escape_string($_POST['profession']);
		IF ($this->checkEntry($nom,$prenom)){
			$query = sprintf("INSERT INTO signataire (`nom`, `prenom`, `adresse`, `profession`, `date`) 
							  VALUES ('%s', '%s', '%s','%s', NOW())",
							  $nom, $prenom, $adresse, $prof );
			IF (mysql_query($query))
				RETURN true;
		}
		else
			RETURN false;
	}
 
	FUNCTION checkEntry($nom,$prenom){
		$query = sprintf("SELECT COUNT(*) FROM signataire WHERE nom='%s' AND prenom='%s'",$nom ,$prenom);
		echo $query;
		$check = mysql_query($query);
		IF (mysql_result($check,0,0) == 0){
			RETURN true;
		}
		else {
			RETURN false;
		}
	}
je me demande si il est possible de faire tout ça en une seule requête?
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 09h08   #2
Membre éprouvé
 
Avatar de nounetmasque
 
Inscription : janvier 2003
Messages : 491
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 491
Points : 488
Points : 488
Tu peux regarder du côté de la fonction INSERT IGNORE dans la doc MYSQL...
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."
nounetmasque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 09h38   #3
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
sinon si ta clef primaire est fonction du nom tu peux utiliser ON DUPLICATE KEY UPDATE
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 11h49   #4
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
salut,
merci pour vos réponses.
En fait, il suffit de désigner les deux champs nom et prenom comme unique et mysql n'autorise pas les doublons !
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h21.


 
 
 
 
Partenaires

Hébergement Web