gpt4 book ai didi

php - 像往常一样查询 PDO

转载 作者:行者123 更新时间:2023-11-28 23:39:46 25 4
gpt4 key购买 nike

在我的类“uzytkownikclass.php”中,我有一个名为“$handler”的变量。该变量存储与我的 MySQL 数据库的连接。之前,我创建了一些查询数据库数据的方法。这些功能工作正常。但是我创建了一个名为“hasRole”的新方法来检查用户角色(管理员、版主等)。但是我有一个错误,PDO 对我来说是新的,我无法单独解决这个问题。这是我的代码:

public function hasRole()
{
$email=$_SESSION['email_session'];
$stmt = $this->handler->prepare("SELECT COUNT(*) FROM users INNER JOIN rolausera ON users.id = idusera INNER JOIN rola ON idroli = rola.id WHERE email = :email AND rola.id = :rola");
$stmt->bindValue(':email',$email, PDO::PARAM_STR);
$stmt->bindValue(':rola',$rola, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();
if($result[0]>0)
{
return TRUE;
}
else
{
return FALSE;
}
}

这是一个错误:

Fatal error: Call to a member function prepare() on null in D:\Programy\XAMPP\htdocs\logic\uzytkownikclass.php on line 120

正如我之前所说,我有工作方法:

$stmt = $this->handler->prepare("SELECT id, login, email, haslo FROM users WHERE email=:email1 ");
$stmt->execute(array(':email1'=>$email1));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);

这是我的连接方法:

public $handler;
public function connection()
{
$this->handler = new PDO('mysql:host=localhost;dbname=blog', 'root', '',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
if($this->handler==false)
{
echo 'Blad';
}

}

我尝试删除查询中的关系并使用简单的“SELECT * FROM user”,但我遇到了同样的错误。问候。

最佳答案

问题是:您是否在调用 hasRole() 之前调用了 connection() 方法,或者您可能在代码中的某处关闭了连接?无论如何,如果连接已建立,我会检查所有尝试查询数据库的方法,如果没有建立连接,则调用 connection() 方法。 Php 的 is_null() 函数有助于确定是否已设置变量。我还会检查 $handle 是否为假。

关于php - 像往常一样查询 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732700/

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