【问题标题】:What's wrong with PDO in other class?其他班级的PDO有什么问题?
【发布时间】:2013-01-18 01:12:04
【问题描述】:

我只是将我网站的 MySQL 更改为 PDO,当我尝试在其他类中使用 PDO 时遇到了一个奇怪的问题。

class Database {
private $pdo;

public function __construct() {
    $this->pdo = new PDO('mysql:host=localhost;dbname=appdora;charset=utf8', 'root', 'root');
}
}

class doClass {

//Variables
private $db;

//PDO
public function __construct(Database $db) {
    $this->db = $db;
}

代码返回:以下错误:

Catchable fatal error: Argument 1 passed to doClass::__construct() must be an instance of Database, none given, called in .../index.php on line xx and defined in ../classes.php on line xx

代码:

$do = new doClass();
if ($do->loginCheck()) { echo 'loginOk'; } else { 'loginError'; }

loginCheck() 是一个无需类即可工作的简单函数!

你能帮我吗,有什么问题吗? 提前致谢!

【问题讨论】:

  • 你在哪里发起你的doClass?显示该代码。
  • 显示错误实际指向的代码……
  • 已添加!感谢您的帮助!

标签: php mysql class pdo


【解决方案1】:
$do = new doClass();

您定义了 doClass 类以期望构造函数中的参数:

public function __construct(Database $db)

因此您需要提供Database 类型的参数才能成功构造对象。

例如,如果您在变量$database 的某个位置之前存储了一个数据库对象,您可以简单地将它传递给doClass 的构造函数,如下所示:

$do = new doClass($database);

【讨论】:

  • 你能告诉我具体怎么做吗?
  • 非常感谢您的帮助!
  • 你还能帮忙吗?如果我尝试进行 PDO-> 查询,它会向我显示问题:Fatal error: Call to undefined method Database::query()。我正在尝试通过以下方式访问:$stmt = $this->db->query(...);
  • 那么您显然没有在 Database 类中定义 query 方法。您可能想调用内部PDO 对象的query 方法。
猜你喜欢
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多