[英]SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
[英]SQLSTATE[HY093]: Invalid parameter number: parameter was not defined #
我正在編寫一些代碼,以通過以下代碼與phpmyadmin上的登錄數據庫進行交互。
但是,我收到以下錯誤,它沒有指定錯誤發生在哪一行。 這已經困擾了我三天,我的研究沒有找到任何解決方案。 以防萬一:SQLSTATE [HY093]:無效的參數編號:參數未定義
有人可以幫我找出問題所在嗎?
先感謝您。
<?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);
?>
您需要從查詢中刪除美元符號。 更改:
$stmt = $this->db->prepare("SELECT * FROM login_info WHERE user_name = :$user_name AND user_password = :$user_password");
至
$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.