recherche

Maison  >  Questions et réponses  >  le corps du texte

Résultat unique pour la base de données utilisant MySQLi

<p>C'est la première fois que j'essaie MySQL. Je l'ai fait en boucle. Les résultats de la boucle s'affichent, mais lorsque j'essaie d'afficher un seul enregistrement, je reste bloqué. C'est le code de boucle en action. </p> <pre class="brush:php;toolbar:false;"><?php // Connexion à la base de données $hostname="localhost"; $database="monnomdebase"; $username="racine"; $mot de passe=""; $conn = mysqli_connect($nom d'hôte, $nom d'utilisateur, $mot de passe, $base de données); ?> <?php $query = "SELECT ssfullname, ssemail FROM userss ORDER BY ssid"; $result = mysqli_query($conn, $query); $num_results = mysqli_num_rows($result); ?> <?php /*Parcourir chaque ligne et afficher les enregistrements */ pour($i=0; $i<$num_results; $i++) { $row = mysqli_fetch_assoc($result); ?> Nom : <?php print $row['ssfullname'] ?> <br /> E-mail : <?php print $row['ssemail'] ; <br /><br /> <?php // fin de la boucle } ?>≪/pré> <p>Comment puis-je afficher un seul enregistrement, n'importe quel enregistrement, nom ou adresse électronique, à partir de la première ligne ou autre, juste un seul enregistrement, comment faire ? En cas d'enregistrement unique, envisagez de supprimer toutes les parties en boucle ci-dessus et affichons n'importe quel enregistrement unique sans boucle. </p>
P粉226642568P粉226642568483 Il y a quelques jours632

répondre à tous(2)je répondrai

  • P粉321676640

    P粉3216766402023-08-30 11:43:49

    Utilisez mysqli_fetch_row(). Essayez ceci,

    $query = "SELECT ssfullname, ssemail FROM userss WHERE user_id = ".$user_id;
    $result = mysqli_query($conn, $query);
    $row   = mysqli_fetch_row($result);
    
    $ssfullname = $row['ssfullname'];
    $ssemail    = $row['ssemail'];

    répondre
    0
  • P粉675258598

    P粉6752585982023-08-30 09:34:29

    Les boucles ne doivent pas être utilisées lorsqu'un seul résultat est requis. Obtenez la ligne maintenant.

    • Si vous devez extraire la ligne entière dans un tableau associatif :

      $row = $result->fetch_assoc();
    • Si vous n'avez besoin que d'une seule valeur, à partir de PHP 8.2 :

      $value = $result->fetch_column();
    • Ou pour les anciennes versions :

      $value = $result->fetch_row()[0] ?? false;

    Voici des exemples complets de différents cas d'utilisation

    Variables utilisées dans les requêtes

    Lorsque vous souhaitez utiliser des variables dans une requête, vous devez utiliser des Déclarations préparées. Par exemple, disons que nous avons une variable $id :

    PHP >= 8.2

    // get a single row
    $sql = "SELECT fullname, email FROM users WHERE id=?";
    $row = $conn->execute_query($query, [$id])->fetch_assoc();
    
    // in case you need just a single value
    $sql = "SELECT count(*) FROM users WHERE id=?";
    $count = $conn->execute_query($query, [$id])->fetch_column();

    Ancienne version PHP :

    // get a single row
    $query = "SELECT fullname, email FROM users WHERE id=?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("s", $id);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    
    // in case you need just a single value
    $query = "SELECT count(*) FROM userss WHERE id=?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("s", $id);
    $stmt->execute();
    $result = $stmt->get_result();
    $count = $result->fetch_row()[0] ?? false;

    Une explication détaillée du processus ci-dessus peut être trouvée dans mon article. Quant à savoir pourquoi vous devez le suivre, voyez cette fameuse question

    Aucune variable dans la requête

    Dans votre cas, si aucune variable n'est utilisée dans la requête, vous pouvez utiliser la méthode query() :

    $query = "SELECT fullname, email FROM users ORDER BY ssid";
    $result = $conn->query($query);
    // in case you need an array
    $row = $result->fetch_assoc();
    // OR in case you need just a single value
    $value = $result->fetch_row()[0] ?? false;

    répondre
    0
  • Annulerrépondre