Warning: mysql_result()......

Résolu/Fermé
tytyrael - 27 oct. 2011 à 21:12
 tytyrael - 28 oct. 2011 à 00:56
Voici l'erreur qui met afficher

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 8 in C:\wamp\www\site\changepass.php on line 15

et voici mon code :

<?php 
include_once("header.php");
if ($login<>"") {

	function html ($val) {
	return addslashes(stripslashes($val));
	}
	
			$pass = base64_encode(pack('H*', sha1($pass)));
			$req1 = "SELECT password FROM accounts WHERE login = '" . html($login) . "' LIMIT 1";

			$rub = mysql_query($req1, $connexion);
			$passdata  = mysql_result($rub,0); 
			
			if ($passdata != $pass)
			{
			$resultat = '<span style="color:red">Le mot de passe et/ou login indiqué ne correspond pas.</span>';
			}
			else 
				{
				$newpass = base64_encode(pack('H*', sha1($newpass)));
				$req2 = "UPDATE accounts SET password = '" . html($newpass) . "' WHERE login= '" . html($login) . "'";
				$rub = mysql_query($req2, $connexion);
				
				$resultat = '<span style="color:green">Votre mot de passe a bien été modifié.</span>';
				}
				}
?> 



L'erreur porte donc sur " $passdata = mysql_result($rub,0); "

Autre info :
L'erreur n'apparait que lorsque les champs sont mal rempli (donc que l'utilisateur ou l'ancien mot de passe est incorrecte)

la requête en revanche fonctionne bien si l'ancien mot de passe et le compte existe
et le mot de passe est bien remplacer.

2 réponses

Bonjour

mysql_result($rub,0); va chercher la première ligne de résultat de ta requête.
Mais s'il n'y a aucune ligne de résultat (login inconnu) $rub n'a pas de première ligne et mysql_result($rub,0); ne veut rien dire.

D'ailleurs, pourquoi chercher le password associé à un login, et ensuite vérifier que c'est le bon pasword ? Tu peux tout vérifier en une seule requête :

$req1 = "SELECT COUNT(*) as cnt FROM accounts WHERE login = '" . html($login) . "' AND password ='$pass'";
$rub = mysql_query($req1, $connexion);
if (mysql_result($rub,0) >0) {
// connu
} else {
// inconnu
}
0
je te remercie , avec ton code plus d'erreur ! et j'avoue que ça le simplifie un peu

j'ai juste inverser la condition

if (mysql_result($rub,0) ==0) {
// inconnu
} else {
// connu
}


merci encore
0