我是一个 PHP/MySQL 菜鸟。我正在进行身份验证,但我的代码不允许我访问正确的页面。这是我所拥有的:
<?php
$username = null;
$password = null;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
require_once('database.php');
if(!empty($_POST["username"]) && !empty($_POST["password"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$query = $connection->prepare("SELECT user_id FROM users WHERE user_login = ? and user_password = PASSWORD(?)");
$query->bind_param("ss", $username, $password);
$query->execute();
$query->bind_result($userid);
$query->fetch();
$query->close();
if(!empty($userid)) {
// Stuff happens
} else {
// goes back to the login page
此时,$userid 似乎是空的,因为我不断返回登录页面。 database.php 只是连接,我已经确认这是可以的。我还确认表单正确提交了 $_POST["username"] 和 $_POST["password"],上面的代码创建了 $username 和 $password。我可以回显这些内容以查看正确的结果。数据库中的字段名称与 SQL 语句中的字段名称相匹配。但由于某种原因,$userid 为空。我读过其他帖子,但我几乎不明白我在做什么,更不用说其他人在做什么或解释什么了。我认为这是非常基本的东西,但它是什么?
最佳答案
为什么是 PASSWORD()?
$query = $connection->prepare("SELECT user_id FROM users WHERE user_login = ? and user_password = ?");
$query->bind_param("ss", $username, $password);
$query->execute();
$query->bind_result($userid);
$query->fetch();
$query->close();
关于php - 为什么准备好的语句似乎没有(再次)绑定(bind)结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24813551/