当前位置: 首页 > 面试题库 >

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

尚俊楠
2023-03-14
问题内容

我正在尝试第一次使用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
} 
?>

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


问题答案:

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

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

    $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");


 类似资料:
  • 我有3个表users(id、name等)、trips(id、user_id、from、to、destination)、vactions(id、user_id、from、to、destination)。我使用mysqli,我不知道怎么做,我需要像这样获取这个表 我试过左加入,但我不工作,我的代码现在只适用于用户:

  • 问题内容: 我需要从结果对象获取所有行。我正在尝试建立一个将容纳所有行的新数组。 这是我的代码: 应该是包含所有行的新数组,但是我得到一个空数组。 任何想法为什么会这样? 问题答案: 您有一个轻微的语法问题,即错误的分号。 注意结尾的分号吗?这意味着后面的程序段不是循环执行的。摆脱它,它应该可以工作。 另外,您可能需要检查查询是否确实有效:

  • 我正在为我的网站做一个注册页面。我在PHPMyAdmin中维护一个包含7个字段的数据库(id、用户名、密码、电子邮件、活动、代码和日期)。我正在使用代码和活动字段来实现电子邮件激活。注册表单使用post方法获取4个参数(名称、电子邮件、密码和重新键入密码),并将提交按钮的信息传递给PHP代码,以检查用户是否是新的,电子邮件ID是否应该是新的,并在单击提交按钮后检查空字段。PHP代码如下所示: 当我

  • 本文向大家介绍PHP使用mysqli操作MySQL数据库的简单方法,包括了PHP使用mysqli操作MySQL数据库的简单方法的使用技巧和注意事项,需要的朋友参考一下 PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 。 而 mysqli 恰恰也支持了这些新特性。 一. 建立和断开连接 与 My

  • Iam是JPA的新手,尝试创建EJB 3.0+JPA(hibernate)应用程序。当iam将数据持久化到数据库中时,出现以下异常。 sessionBean方法: 客户类(实体类)

  • 在过去的一周里,我一直试图在电脑上学习MySQL。我有一个名为用户的数据库和一个名为用户的表,表中有数据。但是我下面有这个PHP代码,它不会得到任何结果,我不知道为什么。