Warning incomprehensible lors de l'exécution d'une requette

Résolu
karimfellah Messages postés 30 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 15 janvier 2010 - 19 oct. 2009 à 12:23
karimfellah Messages postés 30 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 15 janvier 2010 - 19 oct. 2009 à 15:56
Bonjour cher amis, ca marche les affaires...
j'ai une question a vous poser:
ma fonction et comme suit:

public function verifier_utilisateur()
{
require_once('config1.php');
$mysqli= new mysqli(db_host,db_user,db_password,db_database);
if ( isset($_POST['login_utilisateur']) && isset($_POST['passwd_utilisateur']))
{
[color=red]$req= "select count(*) from utilisateur as nbre where (login_utilisateur='$this->login_utilisateur' and passwd_utilisateur='$this->passwd_utilisateur')";
$mysqli->query($req);
//le probléme je crois est ici

$resultat=mysqli_fetch_array('$req');

if ($resultat['nbre']!=0)
{
echo " <center> Utilisateur Connecté </center>";
include "Acceuil.html";
}
else
{
$message ="<center>Login ou mot de passe incorrect!...</center>";
echo "<center>$message</center>";
include "inscription.html";
}
}
else
{
$message1= "Veuillez taper les paramètres d'authentification";
echo"
<center> $message1 <center>";
}

} /color


voila le message d'erreure:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given in C:\Program Files\EasyPHP5.3.0\www\analyseur_syntaxique\class_utilisateur.php on line 67

ma requette marche car je l'ai executé à pars ca donne le bon resultat mais je crois que le probléme est l'utilisation
de $resultat =mysqli_fetch_aray($req)
Veuillez m'expliquer le probléme.
Merci d'avance.
Karim

2 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
19 oct. 2009 à 14:27
Salut,

Pour que tout fonctionne bien, il faut :
- éviter d'utiliser des propriétés d'objets dans une chaîne de caractères, ou alors avec la bonne syntaxe :
$req= "select count(*) from utilisateur as nbre where (login_utilisateur='{$this->login_utilisateur}' and passwd_utilisateur='{$this->passwd_utilisateur}')"; 


- récupérer le résultat de la requête... mysqli::query() renvoie une ressource résultat, que tu pourras manipuler :
$result = $mysqli->query($req);


- utiliser mysqli::fetch_arry() sur le résultat obtenu, et pas sur une chaine :
$resultat = mysqli_fetch_array($result);


Pour que ton code soit plus propre et plus sécurisé, il faut aussi que tu vérifies les erreurs qui peuvent se produire (notamment lors de l'exécution de la requête). Il faut aussi protéger les données que tu insères dans ta requête pour éviter tout risque d'injection SQL, avec mysqli::real_escape_string()

Enfin, un coup tu utilises la version objet de mysqli, un coup tu utilises la version procédurale. Mets-toi d'accord avec toi-même sur ce que tu utilises, histoire que ce soit plus clair ;)

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
3
karimfellah Messages postés 30 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 15 janvier 2010
19 oct. 2009 à 15:56
Sava c bon Neige j'ai utilisé la classe mysql au lieu de mysqli et c'a marché.
Merci t'es toujours là lorsque je pose la question 1000 Merci.
Karim .
Bonne journée
0
Rejoignez-nous