我一直在尝试使用php和mysql创建一个简单的登录脚本。我能够连接到数据库并在其中输入数据,但我无法使用SELECT从数据库中获取数据。
这是我的注册码(有效):
<?php
include_once "dbconnect.php";
$email = $_POST['email'];
$username = $_POST['username'];
$password = md5($_POST['password']);
$insert = "INSERT INTO users (username, email, password) VALUES ('$username','$email','$password')";
if ($mysqli->query($insert) === TRUE) {
?>
<script>alert('successfully registered ');</script>
<?php
}else {
?>
<script>alert('error'); </script>
<?php
}
header( 'register.html' );
mysqli_close($mysqli);
?>
然后这是我的登录代码(不起作用):
<?php
session_start();
require_once("dbconnect.php");
?>
<br>
<?php
$username = $_POST['username'];
$password = md5($_POST['password']);
echo "error: ";
echo mysqli_error($mysqli);
?>
<br>
<?php
echo "username: ", $username;
$query = "SELECT password FROM users WHERE username='$username'";
$queryfinal = $mysqli->query($query, $mysqli);
$encpassword = md5($password);
?>
<br>
<?php
echo "password: ";
echo $encpassword;
?>
<br>
<?php
echo "query: ";
echo $queryfinal;
if ($queryfinal == $encpassword) {
$_SESSION["username"] = "$username";
header('Location: https://ruofftechnologies.com/login1/home.html');
}
else {
session_destroy();
?>
<br>
<?php
echo "failed";
}
?>
当我输入密码为“hi”的用户名“hi”时,我的登录代码才会返回此信息:
“已成功连接 错误: 用户名:嗨 密码:179085fcac495de6d84339f8e3b11a34 查询: 失败“
非常感谢任何帮助!
-Gabriel
答案 0 :(得分:2)
<div class="container">
<div class="one">
</div>
<div class="two"></div>
<div class="two"></div>
</div>
返回$queryfinal = $mysqli->query($query, $mysqli);
个对象。
mysqli_result
返回一个字符串。
$encpassword = md5($password);
将字符串与非字符串对象进行比较,因此它总是返回 if ($queryfinal == $encpassword) {
。
从结果中获取数据比仅仅转换为字符串更复杂。&#34; false
包含一个或多个行数据,每个行包含一个或多个列。要导航此数据结构,您可以使用各种mysqli_result
函数。在你的情况下,我会使用
mysqli_result::fetch_*
这会将结果的当前行提取到名为$resultrow = $queryfinal->fetch_assoc();
$resultpwd = $resultrow['password'];
的关联数组中,然后检索名为$resultrow
的数组元素。