Datenbankoperation, um ein einzelnes Ergebnis zu erhalten: Verwenden Sie MySQL, um eine Verbindung zur Datenbank herzustellen
P粉111227898
P粉111227898 2023-08-21 22:59:04
0
2
567
<p>Dies ist das erste Mal, dass ich versuche, mySQLi zu verwenden. Im Falle einer Schleife habe ich dies getan. Die Ergebnisse der Schleife werden angezeigt, aber wenn ich versuche, einen einzelnen Datensatz anzuzeigen, bleibt er hängen. Hier ist der Arbeitsschleifencode. </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 /*Durchlaufen Sie jede Zeile und zeigen Sie die Datensätze an*/ 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 zeige ich einen einzelnen Datensatz an, einen beliebigen Datensatz, einen Namen oder eine E-Mail-Adresse, aus der ersten Zeile oder irgendwo anders, nur einen einzelnen Datensatz? Wie mache ich das? 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粉111227898
P粉111227898

Antworte allen(2)
P粉554842091

使用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'];
P粉010967136

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

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

    $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;
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage