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

问题描述 投票:-1回答:2

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

我在数据库中有一个用户表,每个用户都有一个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 mysqli
2个回答
2
投票

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

无需检索密码,然后在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...');

0
投票

您可以使用 :

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

然后你使用session

© www.soinside.com 2019 - 2024. All rights reserved.