Equivalemnt Mysqli de mysql_fetch_array

Résolu/Fermé
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - Modifié par maxireussite le 26/09/2016 à 06:21
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 26 sept. 2016 à 18:28
Bonjour,

Voici une requête MysQl dont je ne suis pas peu fier, et pour cause il fonctionne à merveille...

$req1="SELECT titre, nom, email FROM oc_clients WHERE code_client ='".$code_client."'"; 
$resultat1=mysql_query($req1) or die ("Pb avec la requette ".mysql_error());
$row=mysql_fetch_array($resultat1);
$titre=$row['titre'];
$nom=$row['nom'];
$email=$row['email'];


Je me casse les dents sur l'équivalent MysQli.

Je propose le code suivant qui ne veut RIEN entendre :
 $sql2 ="SELECT titre, nom, FROM mr_clients WHERE code_client ='".$client_id."'"; 
      $res2 = $conn->query($sql2);
      
 $resultat1=mysqli_query($res2);
 $row=mysqli_fetch_array($resultat1);
 $titre=$row['titre'];
 $nom=$row['nom'];
 $email=$row['email'];



Merci de votre aide précieuse.
cdlt

9 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 sept. 2016 à 09:13
Bonjour
Tu as fais la connexion à ta bdd de quelle manière ? (Façon objet ou procedurale)?


0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 26/09/2016 à 13:46
Bonjour,

Euh ! procédurale je crois :

if($conn = mysqli_connect('localhost', '******', '', '******'))
{
}
else
{
    echo 'Erreur !';
}
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 sept. 2016 à 14:46
Donc que vient faire la ligne :
  $res2 = $conn->query($sql2);
?

Ensuite, pour les différentes instructions (telle que le fetch_array..) il suffit de regarder le manuel php :
https://www.php.net/manual/fr/mysqli-result.fetch-array.php
Regarder la section : Exemple #2 Style procédural
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 26/09/2016 à 15:18
Je te remercie, Jordane45,
figure toi que c en désespoir de cause que je viens ici.

J'aime bien le "il suffit"; car je suis déjà allé dans la bible, mais sans étude de liturgie, beaucoup de passages restent incompris du pékin de base...

J'ai besoin de récupérer les variables, j'ai testé les différentes solutions qui me sont proposées ci-dessus, et je n'ai que des résultats d'erreur :


/* Tableau numérique */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* Tableau associatif */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

/* Tableau associatif et numérique */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);

/* Libération des résultats */
mysqli_free_result($result);

/* Fermeture de la connexion */
mysqli_close($link);


J'ai tenté ça selon la bible, ça ne donne rien :

 $result ="SELECT titre, nom, FROM mr_clients WHERE client_id ='".$client_id."'"; 
 $res1 = mysqli_query($link, $result );
 
 /* Tableau associatif */
 $row = mysqli_fetch_array($res1, MYSQLI_ASSOC);
 printf ("%s (%s)\n", $row["titre"], $row["nom"]);
 
 /* Libération des résultats */
 mysqli_free_res1($res1);
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 sept. 2016 à 15:19
Quand tu as un (ou plusieurs ) messages d'erreur... il serait bien de le(s) donner... que l'on sache ce qu'il t'arrive exactement....

Ensuite... tu as, dans les exemples de code la variable $link .... celle-ci correspond à ta variable $conn de ta connexion.....

Je t'invite à nous poster l'intégralité de ton code actuel + nous préciser les messages d'erreurs ( complets !! ) que tu rencontres.
C'est seulement à partir de ces données que nous pourrons t'aider.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 26/09/2016 à 15:35
Je te remercie bcp de ton aide.

J'ai avant tout un problème : je ne suis même certain que ce soit le code qui réponde à mon besoin exprimé initialement. Je rappelle j'ai besoin de récupérer des variables pour m'en servir plus loin.

Selon la bible, voici ce que je propose : peut-on me dire si c le code approprié, même s'il y des erreurs ? :

 $result ="SELECT titre, nom, FROM mr_clients WHERE client_id ='".$client_id."'"; 
 $res1 = mysqli_query($conn, $result );
 
 /* Tableau associatif */
 $row = mysqli_fetch_array($res1, MYSQLI_ASSOC);
 printf ("%s (%s)\n", $row["titre"], $row["nom"]);
 
 /* Libération des résultats */
 mysqli_free_res1($res1);



Voilà ce que j'obtiens comme erreur :

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 26/09/2016 à 15:42
Je viens de détecter une erreur dans "select" il y a une virgule après "nom".

Une fois corrigée, je n'ai que ce message d'erreur :

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 sept. 2016 à 16:09
Le message d'erreur est clair :
ligne 295 de ton fichier php ... La fonction mysqli_free_res1 est inconnue ......
La bonne syntaxe est : mysqli_free_result
https://www.php.net/manual/fr/mysqli-result.free.php
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 26/09/2016 à 16:50
Merci.

La formule corrigée n'affiche plus aucune erreur :

	$result ="SELECT titre, nom FROM mr_clients WHERE client_id ='".$client_id."'"; 
	$res1 = mysqli_query($conn, $result);
	
	/* Tableau associatif */
	$row = mysqli_fetch_array($res1, MYSQLI_ASSOC);
	printf ("%s (%s)\n", $row["titre"], $row["nom"]);
	
	/* Libération des résultats */
	mysqli_free_result($res1);


MAIS ma question demeure :

comment récupérer les variables $titre et $nom , puisque là je n'arrive pas à les récupérer pour m'en servir plus loin ?

Avec Mysql ma formule initiale (voir début du post), me le permettait, là comment faire avec Mysqli ?

Merci de vos lumières.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 sept. 2016 à 17:02
De la même façon que tu les utlises dans ta ligne de code :
printf ("%s (%s)\n", $row["titre"], $row["nom"]);

ou même dans ton précédent code (celui en version mysql )
...


Les données sont stockées dans un array ( $row)
donc tes variables sont :
 $titre = $row["titre"]; 
$nom =  $row["nom"];


Ne le prend pas mal ... mais ..... c'est un peu le b.a.ba de la programmation... savoir manipuler les différents types de variables.
Si tu ne connais pas, je pense que tu devrais commencer par reprendre les bases de la programmation PHP avant d'essayer de poursuivre ton dev actuel. Tu as trop de lacunes pour pouvoir correctement avancer;......
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
26 sept. 2016 à 17:37
MErci bcp.

je ne le prends pas mal.

Figure toi que j'ai passé des nuits et des nuits à tenter d'apprivoiser MysQl, et voila que l'on me dit que maintenant c... MysQli.

J'adore bidouiller, mais je n'ai gère le temps de RE-devenir programmateur averti. Je n'ai pas encore eu trop le temps de m'y remettre en nuits blanches, d'autant que c tout de suite de j'ai le problème.

Merci pour ton aide précieuse, je vérifie tout cela.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 sept. 2016 à 18:10

Figure toi que j'ai passé des nuits et des nuits à tenter d'apprivoiser MysQl, et voila que l'on me dit que maintenant c... MysQli.

Il n'y a pas de grosses différences entre les deux.
La syntaxe des fonctions mysql change un peu ( on ajoute un "i" et on passe parfois, pour certaines instructions, la connexion ($con dans ton exemple)).
Sinon, le reste du code fonctionne à l'identique (surtout au niveau PHP/html/css ).


mais je n'ai gère le temps de RE-devenir programmateur averti. Je n'ai pas encore eu trop le temps de m'y remettre en nuits blanches

Un programmateur.. c'est pratique.. surtout la nuit ... pour commander les heures de déclenchement de lumières electriques ou de la machine à laver...
Un programmeur... c'est mieux (pour coder..).

Bon... j'arrête de te charier. :-)
Bonne soirée.

Et n'hésite pas à revenir si tu as d'autres soucis/questions.
J'essaierai d'être un peu moins "brut" dans ma façon re répondre.

PS: Si cette question est résolue, merci de ne pas oublier de mettre le sujet en "RESOLU". (lien qui se trouve sous le titre de ta question tout en haut..)

@++

Cordialement,
Jordane.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 26/09/2016 à 18:17
j'aime charrier aussi à mon tour. MErci en tout cas.

Je suis dessus, dès que ça marche je ne manquerai pas de le signaler.

A+
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 26/09/2016 à 18:29
Aux forceps :))

 $sql2 ="SELECT titre, nom FROM mr_clients WHERE client_id ='".$client_id."'"; 

 $res1 = mysqli_query($conn, $sql2);
 
 /* Tableau associatif */
 $row = mysqli_fetch_array($res1, MYSQLI_ASSOC);

 $titre=$row['titre'];
 $nom=$row['nom'];

 /* Libération des résultats */
 mysqli_free_result($res1);



A optimiser peut être, mais en tout cas ça marche.

Merci Jordane45
0