Page 1 sur 1

requet préparé

Posté : 17 sept. 2006, 11:10
par nuphius
bonjour

voila je suis en train d'apprendre à programmer en PHP, et je suis en train de faire un programme qui permet aux visiteurs de s'inscrire sur mon site. Une partie du programme regarde dans ma base de donnée si le mail saisi n'existe pas déjà. Le problème est la. Dans mon bouquin ils disent qu'utiliser un requête préparé pour l'envoi SQL et plus performant que mysqli_query. Mais voila sans que j'arrive a comprendre pourquoi la requête préparé ne retourne aucune erreur lors de son exécution mais n'a pas l'air de fonctionner car elle me retourne un valeur fausse alors que quand j'utilise mysqli_query tout fonctionne parfaitement et retourne la bonne valeur. voici les deux codes différent:


Fonction préparé qui me retourne constament 0 quand j'appel mysqli_stmt_num_rows (alors qu'il doit retourner 1).
function verif($mail) {

	include_once('Membres/connect_sql.php5');
	
	$mail_sql=mysqli_real_escape_string($link,$mail);
	
	$sql="SELECT * FROM identification WHERE mail=?";
	$rp=mysqli_prepare($link,$sql);
	mysqli_stmt_bind_param($rp, "s", $mail_sql);
	mysqli_stmt_execute($rp);
	
		if (mysqli_stmt_num_rows($rp)>0) {
		
			return FALSE; }
		
		else {

			return TRUE; }
				
	mysqli_stmt_close($rp);
}

Fonction mysqli_query qui fonctionne parfaitement bien ( retourne 1 )
function verif($mail) {

	include_once('Membres/connect_sql.php5');
	
	$mail_sql=mysqli_real_escape_string($link,$mail);
	
	$sql="SELECT * FROM identification WHERE mail='$mail_sql'";
	$rp=mysqli_query($link,$sql);
	
		if (mysqli_num_rows($rp)>0) {
		
			return FALSE; }
		
		else {
 
			return TRUE; }
				
}
Donc voila si quelqu'un trouve, merci de m'expliquer.

cordialement
mikael

Posté : 17 sept. 2006, 11:33
par Cyrano
Essaye en remplaçant :
<?php
//...
    if (mysqli_stmt_num_rows($rp)>0) { 
//...
?>
par
<?php
//...
    if ($rp->num_rows > 0) { 
//...
?>

Posté : 17 sept. 2006, 11:41
par BRUNET
sa marche pas non plus il renvoi toujour 0 au lieu de 1

Posté : 17 sept. 2006, 11:59
par Cyrano
Je viens de faire le test en utilisant à quelques modifications mineures près le code montré en exemple dans la doc et de mon coté, ça fonctionne très bien. il doit y avoir une erreur quelque part dans ton code...

Posté : 17 sept. 2006, 12:01
par BRUNET
ok merci

je vais chercher alors. je vais bien finir par trouver