PHP unable to retrieve data from database [duplicate]

≯℡__Kan透↙ 提交于 2019-12-25 17:04:16

问题


I'm new to PHP and I'm trying to authenticate the users by their username and password.(basically login form) If their password matches then they are redirected to welcome.php. I'm experiencing two issues. The major one is that I receive a warningWarning: mysqli_stmt::bind_param(): Number of variables doesn't match the number of parameters in prepared statement despite the code $stmt->bind_param("ssss", $id, $username, $password, $data);, which has 4 parameters. The second question is how to redirect the user only when the password is matched. How to solve these two problems?

session_start();
require_once "config.php";

$username = $_POST['username']; 
$password = $_POST['password']; 
$conn=$link;
$query = "SELECT id, username, password, data FROM mathbglogin WHERE username = '$username' and password = '$password'";
$stmt = $conn->prepare($query);
$stmt->bind_param("ssss", $id, $username, $password, $data);
$stmt->execute();
echo $id;
$stmt->bind_result($id, $username, $password, $data);
    if($stmt->fetch()) 
      $_SESSION['username'] = $username;
 $_SESSION['data'] = $data;
//   header("location: welcome.php"); I marked this like because it is always executed, which should be changed to executed only when the user is authenticated
  echo $username;
  mysqli_close($conn); 

In config.php I have:

define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'users');
 $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
 if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

This is the database screenshot. I have dummy data in it.

来源:https://stackoverflow.com/questions/59445805/php-unable-to-retrieve-data-from-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!