Heim  >  Fragen und Antworten  >  Hauptteil

Holen Sie sich mit mysqli ein einzelnes Ergebnis aus der Datenbank

<p>Dies ist mein erster Versuch, mySQLi zu verwenden. Ich habe dies im Fall einer Schleife getan. Die Ergebnisse der Schleife werden angezeigt, aber wenn ich versuche, einen einzelnen Datensatz anzuzeigen, bleibt er hängen. Unten ist der Schleifencode, er funktioniert. </p> <pre class="brush:php;toolbar:false;"><?php //Mit Datenbank verbinden $hostname="localhost"; $database="mydbname"; $username="root"; $password=""; $conn = mysqli_connect($hostname, $username, $password, $database); ?> <?php $query = „SELECT ssfullname, ssemail FROM users ORDER BY ssid“; $result = mysqli_query($conn, $query); $num_results = mysqli_num_rows($result); ?> <?php /* Jede Zeile durchlaufen und die Datensätze anzeigen */ for($i=0; $i<$num_results; $i++) { $row = mysqli_fetch_assoc($result); ?> Name: <?php print $row['ssfullname'] ?> <br /> E-Mail: <?php print $row['semail']; <br /><br /> <?php // Schleife beenden } ?></pre> <p>Wie kann ich einen einzelnen Datensatz anzeigen, einen beliebigen Datensatz wie Name oder E-Mail, ab der ersten Zeile oder was auch immer, nur einen einzelnen Datensatz, wie kann ich das tun? Im Falle eines einzelnen Datensatzes sollten Sie erwägen, den obigen Schleifenteil zu entfernen und jeden einzelnen Datensatz ohne Verwendung einer Schleife anzuzeigen. </p>
P粉156532706P粉156532706398 Tage vor386

Antworte allen(2)Ich werde antworten

  • P粉930448030

    P粉9304480302023-08-22 21:34:58

    使用mysqli_fetch_row()。尝试这样做:

    $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'];

    Antwort
    0
  • P粉265724930

    P粉2657249302023-08-22 12:11:29

    当只需要一个结果时,不需要使用循环。直接获取行。

    • 如果需要将整行数据获取为关联数组:

      $row = $result->fetch_assoc();
    • 如果只需要一个值,从PHP 8.2开始:

      $value = $result->fetch_column();
    • 或者对于较旧版本:

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

    以下是不同用例的完整示例

    用于查询的变量

    当在查询中使用变量时,必须使用预处理语句。例如,假设我们有一个变量$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();

    旧版本的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;

    上述过程的详细解释可以在我的文章中找到。为什么必须遵循这个过程的原因在这个著名的问题中有解释

    查询中没有变量

    在您的情况下,查询中没有要使用的变量,您可以使用query()方法:

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

    Antwort
    0
  • StornierenAntwort