Mysqli只获取一行/属性[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysqli只获取一行/属性[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我在数据库中有一个用户表,每个用户都有一个id,firstname,lastname,username和password属性。

我正在尝试创建一个简单的登录页面,我需要检查输入的密码是否与输入的用户名相符。

我的查询看起来像这样:

$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = 'SELECT password FROM users WHERE username = "something"';
$result = $conn->query($sql);

查询应返回指定用户的密码,但我不知道如何获取它。

$result->fetch_array()在我的情况下没有返回任何内容。

答案

你正在考虑这种错误的方式。

无需检索密码,然后在php中查询密码。您可以在查询中查询它,看看是否最终得到一行。

此外,使用预准备语句来防止潜在的恶意用户输入是明智的。

$sql = 'SELECT id FROM users WHERE username = ? && password = ?';
if ($stmt = $conn->prepare($sql)) {
    $stmt->bind_param("ss", $_POST['username'], $_POST['password']); //<-- for example
    $stmt->execute();
    $stmt->store_result();
    if ($stmt->num_rows === 1) {
        //good login
    } else {
        //bad login
    }
    $stmt->close();
} else
    die('DB problem...');
另一答案

您可以使用 :

$sql = "SELECT * FROM users WHERE username = '$field_name'";
$result = $conn->query($sql);
if($rowData = $result->fetch_assoc()){
 $username = $rowData['username'];
 $password = $rowData['password'];}

然后你使用session

以上是关于Mysqli只获取一行/属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Mysqli查询只返回一行(最后一行)

仅使用 MySQLi 获取一行

在 while 循环中使用 mysqli_fetch_array 时,PHP/MySQL 如何知道获取下一行?

使用 Mysqli 进行 PHP 登录

警告:mysqli_query():无法获取 mysqli [重复]

用于获取重复记录并在 Gridview 中显示为一行的 SQL 查询