【问题标题】:Why is my pdo variable all the time undefined? [duplicate]为什么我的 pdo 变量总是未定义? [复制]
【发布时间】:2023-03-29 15:58:01
【问题描述】:

我有两个 php 文件,一个是用于 PDO 连接的文件,一个是在此连接上提交准备好的语句的文件:

PDO 连接:

class Connection {

protected $user = "ni873420_2sql1";
protected $pass = "#";
public $pdo_log;

public function __construct() {

        try {

            $pdo_log = new PDO('mysql:host=localhost;dbname=ni873420_2sql1', 
                               $this->user, $this->pass);

        }
        catch (Exception $e) {

            die($e);

        }
    }
}

这是我创建准备好的语句的函数:

    public static function getInfobyEmailUsername($argemailusername) {

    $get_info_query = "SELECT * FROM user WHERE email = ? OR username = ?";

    $conn = new Connection();
    $getinfostmt = $conn->pdo_log->prepare($get_info_query);
    $getinfostmt->execute(array($argemailusername, $argemailusername));

    $userinfo = $getinfostmt->fetch(PDO::FETCH_ASSOC);

    if (!empty ($userinfo)) {
        return $userinfo;
    } else {
        return false;
    }

    }

但我不断收到错误消息:

Fatal error: Call to a member function prepare() on null

我在任何地方都找不到解决方案,谁能帮我解决这个问题,或者至少发送一个链接让我可以找到解决方案?

谢谢!

【问题讨论】:

  • 您永远不会将句柄分配给$conn->pdo_log,而是将其作为局部变量留在构造函数中。

标签: php mysql oop pdo


【解决方案1】:

在你的构造函数中,使用公共变量$pdo_log

  $this->pdo_log = new PDO('mysql:host=localhost;dbname=ni873420_2sql1', 
                           $this->user, $this->pass);

【讨论】:

  • 这真的帮助了我,不知道我怎么看不到,但还是谢谢! :)
  • 酷。请务必将我的答案标记为已接受:)
  • 我一定会这样做的!
猜你喜欢
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多