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

Opération de base de données pour obtenir un résultat unique : utilisez mysqli pour vous connecter à la base de données

<p>C'est la première fois que j'essaie d'utiliser MySQL. Dans le cas d'une boucle, je l'ai fait. Les résultats de la boucle s'affichent, mais lorsque j'essaie d'afficher un seul enregistrement, il reste bloqué. Voici le code de la boucle de travail. </p> <pre class="brush:php;toolbar:false;"><?php //Se connecter à 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 /*Parcourez chaque ligne et affichez 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 afficher un seul enregistrement, n'importe quel enregistrement, nom ou adresse électronique, à partir de la première ligne ou n'importe où ailleurs, juste un seul enregistrement, comment faire ? En cas d'enregistrement unique, envisagez de supprimer la partie boucle ci-dessus et affichons n'importe quel enregistrement unique sans utiliser de boucle. </p>
P粉111227898P粉111227898397 Il y a quelques jours498

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

  • P粉554842091

    P粉5548420912023-08-22 19:56:41

    Utilisez mysqli_fetch_row(). Essayez le code suivant :

    $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粉010967136

    P粉0109671362023-08-22 19:34:43

    Pas besoin d'utiliser une boucle lorsqu'un seul résultat est nécessaire. Obtenez la ligne directement.

    • Si vous avez besoin d'obtenir la ligne entière de données sous forme de 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 des variables doivent être utilisées dans des requêtes, des instructions prétraitées doivent être utilisées. Par exemple, disons que nous avons une variable $id :

    PHP >= 8,2

    // 获取单行
    $sql = "SELECT fullname, email FROM users WHERE id=?";
    $row = $conn->execute_query($query, [$id])->fetch_assoc();
    
    // 如果只需要一个值
    $sql = "SELECT count(*) FROM users WHERE id=?";
    $count = $conn->execute_query($query, [$id])->fetch_column();

    Ancienne version de PHP :

    // 获取单行
    $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();
    
    // 如果只需要一个值
    $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. La raison pour laquelle ce processus doit être suivi est expliquée dans cette fameuse Question.

    Aucune variable dans la requête

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

    $query = "SELECT fullname, email FROM users ORDER BY ssid";
    $result = $conn->query($query);
    // 如果需要一个数组
    $row = $result->fetch_assoc();
    // 或者如果只需要一个值
    $value = $result->fetch_row()[0] ?? false;

    répondre
    0
  • Annulerrépondre