Mysqli只获取一行/属性

时间:2018-03-04 12:31:04

标签: php 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()在我的情况下不会返回任何内容。

2 个答案:

答案 0 :(得分: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...');

答案 1 :(得分: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