php - 链接数据库和stmt并准备

标签 php mysql

我想写一个mysql php代码 如果我输入 ID 和密码,它将检查数据库 并链接到登录成功或登录失败。 但是我的代码无法成功登录,即使 id 和 passwd 是正确的

$mysqli = new mysqli('localhost', 'root', '', 'project');

$username = $_POST['username'];
$password = $_POST['password'];

//to check whether the username exists or not
$stmt = $mysqli->stmt_init();

$stmt->prepare("select pid, password from person where pid = '$username' and passwd = '$password'");
$stmt->bind_param('ss', $username, MD5($password));
$stmt->bind_result($result,$result2);
$stmt->execute();
  1. 我不确定我的 prepare 语句和 bind_param 是否处于正确的位置。 它应该将MD5(密码)(加密)密码与输入密码进行比较

**

if  ($stmt->fetch())
{
    session_start();
    $_SESSION['pid'] = $username;//login id
    header('Location: Login Successfully.php');
    exit();
}else{
$_SESSION['pid'] = $username;
header('Location: Failed to login.php');
}

** 这是我的收获。但它总是转到失败的 login.php

这是我在执行上面代码之前的 login.php。它获取输入 ID 和密码并将其传递给获取代码。

登录: 在下方输入您的用户名和密码:

Username: <input type="text" name="username" /><br />

Password: <input type="password" name="password" /><br />

<input type="submit" value="Submit" />

最佳答案

当使用prepare()时,您需要使用占位符?而不是实际的变量。而且看起来 passwd 应该是 password。所以你会想要改变

$stmt->prepare("select pid, password from person where pid = '$username' and passwd = '$password'");

$stmt->prepare("select pid, password from person where pid = ? and password = ?");

关于php - 链接数据库和stmt并准备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291200/

相关文章:

mysql - 子查询 'in' 操作数应包含 1 列

mysql - 在 SELECT MySql 中运行三个事件时遇到问题

mysql - 对于该应用程序来说,最好的数据库缓存是什么?

php - MySQL通过发送/接收的最后一条消息获取有序的联系人列表

php - 停止警告 : date() [function. 日期]:来自本地主机

php - 什么可能将 "Pragma:no-cache"添加到我的响应 header 中? ( Apache ,PHP)

php - android用php和mysql进行大数据搜索

php - codeigniter 事件记录查询 with where

php - 我如何知道正在用 PHP 加载脚本的页面的 URL?

java - SQL 订单字符串主键