获取单个结果的数据库操作:使用mysqli连接数据库
P粉111227898
P粉111227898 2023-08-21 22:59:04
0
2
576
<p>我第一次尝试使用mySQLi。在循环的情况下,我已经做到了。循环的结果显示出来了,但是当我尝试显示单个记录时卡住了。这是工作的循环代码。</p> <pre class="brush:php;toolbar:false;"><?php // 连接到数据库 $hostname="localhost"; $database="mydbname"; $username="root"; $password=""; $conn = mysqli_connect($hostname, $username, $password, $database); ?> <?php $query = "SELECT ssfullname, ssemail FROM userss ORDER BY ssid"; $result = mysqli_query($conn, $query); $num_results = mysqli_num_rows($result); ?> <?php /*循环遍历每一行并显示记录*/ for($i=0; $i<$num_results; $i++) { $row = mysqli_fetch_assoc($result); ?> 姓名:<?php print $row['ssfullname']; ?> <br /> 电子邮件:<?php print $row['ssemail']; ?> <br /><br /> <?php // 结束循环 } ?></pre> <p>如何显示单个记录,任何记录,姓名或电子邮件,从第一行或其他任何地方,只是单个记录,我该如何做到这一点? 在单个记录的情况下,考虑删除上述循环部分,让我们显示任何单个记录而不使用循环。</p>
P粉111227898
P粉111227898

全部回复(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;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板