一尘不染

使用mySQLi从数据库获得单个结果

php

我正在尝试第一次使用mySQLi。我已经完成了以防循环。循环结果正在显示,但是当我尝试显示单个记录时我陷入了困境。这是有效的循环代码。

<?php
// Connect To DB
$hostname="localhost";
$database="mydbname";
$username="root";
$password="";

@$conn = mysqli_connect($hostname, $username, $password)
        or die("Could not connect to server " . mysql_error()); 
    mysqli_select_db($conn, $database)
        or die("Error: Could not connect to the database: " . mysql_error());

    /*Check for Connection*/
    if(mysqli_connect_errno()){
        // Display Error message if fails
        echo 'Error, could not connect to the database please try again again.';
    exit();
    }
?>

<?php
$query = "SELECT ssfullname, ssemail FROM userss ORDER BY ssid";
$result = mysqli_query($conn, $query);
@$num_results = mysqli_num_rows($result);
?>

<?php
/*Loop through each row and display records */
for($i=0; $i<$num_results; $i++) {
$row = mysqli_fetch_assoc($result);
?>

<?php // echo 'Name' .$row['ssfullname'] . 'email' . $row['ssemail'] . "\n"; ?>

Name: <?php print $row['ssfullname']; ?>
<br />
Email: <?php print $row['ssemail']; ?>
<br /><br />

<?php 
// end loop
} 
?>

上面的代码在循环的情况下很好。现在,如何显示第一行中的任何记录,任何记录,名称或电子邮件,或者仅显示单个记录,我该怎么做?在单个记录的情况下,请考虑删除所有上述循环部分,并显示没有循环的任何单个记录。


阅读 231

收藏
2020-05-29

共1个答案

一尘不染

当仅需要单个结果时,则不应使用循环。只需立即获取该行。

  • 如果您需要将整个行提取到关联数组中:

    $row = $result->fetch_assoc();
    
  • 万一你只需要一个值

    $row = $result->fetch_row();
    

    $value = $row[0];

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

查询中使用的变量

当在查询中使用变量时,则必须使用 准备好的语句 。例如,假设我们有一个变量$id

$query = "SELECT ssfullname, ssemail FROM userss WHERE ud=?";
$stmt = $conn->prepare($query);
$stmt->bind_param("s", $id);
$stmt->execute()
$result = $stmt->get_result();
// in case you need an array
$row = $result->fetch_assoc();
// OR in case you need just a single value
$row = $result->fetch_row();
$value = $row[0];

在我的文章中可以找到有关上述过程的详细说明。至于为什么必须遵循它,在这个著名的问题中得到了解释

查询中没有变量

在您的情况下,如果查询中不使用任何变量,则可以使用以下query()方法:

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

顺便说一下,尽管可以在学习的同时使用原始API,但是将来可以考虑使用一些数据库抽象库。
它将 所有 数据库代码转换为3行:

include 'database.class.php';
$db  = new DB();
$row = $db->getRow("SELECT ssfullname, ssemail FROM userss ORDER BY ssid LIMIT 1");
2020-05-29