8721 sujets

Développement web côté serveur, CMS

Cette requete SQL qui permet de récupérer plusieurs enregistrement dans un tableau associatif fonctionne parfaitement.
$sql = "SELECT * FROM utilisateurs" ;
   $result = $conn->query($sql);      
   $totalUtilisateurs = $result->num_rows;
    $utilisateurs=array();
    if ($result->num_rows > 0) {
     $counter=0;
     while($row_rs= mysqli_fetch_assoc($result)) {
        $rows[] = array_map('utf8_encode', $row);
        $utilisateurs[$counter]['id'] = $row_rs['id'];
        $utilisateurs[$counter]['nom']=  utf8_encode($row_rs['nom']);
        $utilisateurs[$counter]['prenom']= $row_rs['prenom'];
        $utilisateurs[$counter]['age']= $row_rs['age'];
        $utilisateurs[$counter]['ville']= $row_rs['ville'];
        $counter++;
         
        }
   }
   echo json_encode(array('data'=>$utilisateurs,'totalUtilisateurs'=>$totalUtilisateurs))


Maintenant, je voudrais récupérer un seul enregistrement :avec les champs "nom", "prenom","age " et "ville"

[code=php]$sql = "SELECT * FROM utilisateurs WHERE id = 10" ;
   $result = $conn->query($sql);      
   $totalUtilisateur = $result->num_rows;


" while($row_rs= mysqli_fetch_assoc($result)) { " ne fonctionne pas pour un seul enregistrement..
Merci de votre aide.
Frédéric Smiley smile
Eureka !
:[code=php][
$row = $result->fetch_row();
echo $row[1];
echo $row[2];
//etc.
/code]
$row est un tableau dont les indices sont les champs de la table "utilisateurs".
JENCAL a écrit :
tu peux faire un

SELECT * FROM utilisateurs WHERE id = 10 LIMIT 1 


Merci Jencal.
Et ensuite le même code fonctionnerait ?

sql = "SELECT * FROM utilisateurs WHERE id = 10 LIMIT 1" ;
   $result = $conn->query($sql);      
   $totalUtilisateurs = $result->num_rows;
    $utilisateurs=array();
    if ($result->num_rows > 0) {
     $counter=0;
     while($row_rs= mysqli_fetch_assoc($result)) {
        $rows[] = array_map('utf8_encode', $row);
        $utilisateurs[$counter]['id'] = $row_rs['id'];
        $utilisateurs[$counter]['nom']=  utf8_encode($row_rs['nom']);
        $utilisateurs[$counter]['prenom']= $row_rs['prenom'];
        $utilisateurs[$counter]['age']= $row_rs['age'];
        $utilisateurs[$counter]['ville']= $row_rs['ville'];
        $counter++;  
        }
   }
   echo json_encode(array('data'=>$utilisateurs,'totalUtilisateurs'=>$totalUtilisateurs))


Ceci est plus simple, non ?

sql = "SELECT * FROM utilisateurs WHERE id = 10 LIMIT 1" ;
 $result = $conn->query($sql);
$row = $result->fetch_row();
echo $row[1];
echo $row[2];
//etc.

Modifié par fredericmarcel (31 Aug 2016 - 16:59)
Après soit tu utilise ton row[0] /row[1] etc.. et du coup tu optimise le résultat, soit tu utilise directement le LIMIT et tu optimise la requete (donc l'appel à la table), je sais pas ce qui le mieux