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只获取一行/属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 while 循环中使用 mysqli_fetch_array 时,PHP/MySQL 如何知道获取下一行?