gpt4 book ai didi

php - 无法使用 "execute()"执行我的 PDO 查询,出现 "bindParam()"错误

转载 作者:行者123 更新时间:2023-12-01 00:23:41 25 4
gpt4 key购买 nike

我正在创建一个 PDO 登录类以用于我的项目,但由于我是新手,所以我无法将参数绑定(bind)到准备好的 sql 语句。这是执行此操作的功能:

include_once('connection.php');

class User{

protected $db;

public function __construct(){
$oConnection = new Connection;
$this->db = $oConnection->getConnection();
//var_dump($this->db);
}

public function Login($name, $pass){
if(!empty($name) && !empty($pass)){
$st = $this->db;
$st->prepare("SELECT * FROM users WHERE user_name=? and user_password=?");
$st->bindParam(1, $name);
$st->bindParam(2, $pass);
$st->execute();
var_dump($st);

if($st->rowCount == 1){
echo "User verified, Acces granted.";
}else{
echo "Incorrect username or password.";
}

}else{
echo "Please fill in the entire form";
}
}

}

这是连接:

class Connection{

protected $db;

//Construct
public function Connection(){

$conn = NULL;
try{
$conn = new PDO("mysql:host=localhost;dbname=<db_name>", "<db_user>", "<db_pass>");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e){
echo 'ERROR: ' . $e->getMessage();
}

$this->db = $conn;
}

public function getConnection(){
return $this->db;
}
}

我收到以下错误:

fatal error :调用未定义的方法 PDO::bindParam() in ......... on line 22

如果有人能帮我一点忙就好了,我真的很想更好地了解 PDo。

最佳答案

您必须捕获准备调用的结果(这是一个 PDOStatement 对象),然后对其调用 bindParam(),而不是 PDO 对象本身。

$st = $this->db->prepare("SELECT * FROM users WHERE user_name=? and user_password=?");
$st->bindParam(1, $name);
$st->bindParam(2, $pass);
$st->execute();

$st 现在是 PDOStatement 对象,您可以调用 bindParam()execute()

关于php - 无法使用 "execute()"执行我的 PDO 查询,出现 "bindParam()"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19176162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com