首页 > 解决方案 > 使用 PHP 查询 SQL DB 中的单个单元格

问题描述

如果您将我的问题标记为重复,请确保您链接到的问题不是特定于其他人的应用程序的示例。

----------------------
|       Table        |
----------------------
| ID |  Name | Color |
----------------------
| 1  |  Ae   |  Red  |
| 2  |  Be   |  Red  |
| 3  |  Ce   |  Red  |
| 4  |  De   |  Red  |
----------------------

我的问题是,假设我想使用 PHP 进行 SQL 查询以仅从第一行中选择 ID 号我怎么做?

这是我尝试过的:

php

    $host = "localhost";
    $name = "db";
    $user = "root"
    $pass = "password";

    $connection = mysqli_connect($host, $user, $password) or die("Failed");
    mysqli_select_db($connection, $name) or die("Failed");

    $id = mysqli_query($connection, "SELECT id FROM db WHERE id=0");
    $row = mysqli_fetch_assoc($id);

    echo "$id";

为什么这不起作用?需要更改什么才能输出 1 且仅输出 1?请ELI5,SQL烧我的大脑..

标签: phpmysql

解决方案


就 SQL 而言,您必须根据“顺序”定义“第一”,如下所示:

SELECT id FROM db ORDER BY id LIMIT 1

您要求按id列对结果进行排序,默认为升序 (1, 2, 3, ...) 并使用LIMIT子句将结果限制为一行。对于您要按ORDER BY id DESC降序排列的最高值并取出第一个值。

在您的情况下应用它,您可以使用它bind_result来捕获 ID 值:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($host, $user, $password) or die("Failed");

$conn->select_db($name);

$res = $conn->query("SELECT id FROM db ORDER BY id LIMIT 1");

// Declare your intention to capture the result into $id
$res->bind_result($id);
// Fetch the data which applies the binding
$res->fetch();

SQL 起初可能看起来令人困惑。如果您认为这就像编写程序代码(如 PHP),那是错误的思维方式。它是一种查询语言,它本身不像编程,而是关于声明你想要什么并让服务器弄清楚并将数据返回给你。

好消息是 SQL 已经存在了几十年并且有很好的文档记录,甚至是您在这里使用的 MySQL 方言。除了 MySQL 手册之外,还有无数关于数据库和 SQL 的理论和实践方面的书籍。如果它仍然令人困惑,您可能需要找到更好的介绍和参考。


推荐阅读