简体   繁体   English

SQLSTATE [HY093]:无效的参数编号:参数未定义#

[英]SQLSTATE[HY093]: Invalid parameter number: parameter was not defined #

I am writing some code to interact with a login database on phpmyadmin through the following code. 我正在编写一些代码,以通过以下代码与phpmyadmin上的登录数据库进行交互。

However, I get the following error, it doesn't specify which line the error occurs at. 但是,我收到以下错误,它没有指定错误发生在哪一行。 It's been bugging me for 3 days, and my researches didn't lead to any solution. 这已经困扰了我三天,我的研究没有找到任何解决方案。 Just in case : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined 以防万一:SQLSTATE [HY093]:无效的参数编号:参数未定义

Can someone help me pinpoint the problem please? 有人可以帮我找出问题所在吗?

Thank you in advance. 先感谢您。

<?php
session_start();

$user_name = "test" ;
$user_password = "test";

/* Login to database */
$DB_name = "adaming_login_db";
$DB_user = "root";
$DB_pass = "";
$DB_host = "localhost";

try
{
     $DB_con = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
     $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
     echo $e->getMessage();

}

class USER
{
    private $db;

    public function __construct($DB_con)
    {
      $this->db = $DB_con;
    }

    public function login($user_name,$user_password)
    {
       try
       {

          $stmt = $this->db->prepare("SELECT * FROM login_info WHERE user_name = :$user_name AND user_password = :$user_password");
          $stmt->execute(array(':user_name'=>$user_name, ':user_password'=>$user_password));
          $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
          if($stmt->rowCount() > 0)
          {
             if($user_password == $userRow['user_password'] && $user_name == $userRow['user_name'] )
             {
                $_SESSION['user_session'] = $userRow['user_id'];
                echo "Success";
                return true;
             }
             else
             {
                 echo "Failed";
                return false;
             }
          }
       }
       catch(PDOException $e)
       {
           echo $e->getMessage();
       }
   }


}
$user = new USER($DB_con);
$user->login($user_name,$user_password); 


?> 

You need to remove dollar signs from your query. 您需要从查询中删除美元符号。 Change: 更改:

$stmt = $this->db->prepare("SELECT * FROM login_info WHERE user_name = :$user_name AND user_password = :$user_password");

to

$stmt = $this->db->prepare("SELECT * FROM login_info WHERE user_name = :user_name AND user_password = :user_password");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM