【问题标题】:PDO in PHP classPHP 类中的 PDO
【发布时间】:2015-09-14 09:03:29
【问题描述】:

我对 PDO 和 PHP 类有疑问。

在 index.php 我有 required_once db.php 其中包含

db.php

try {
    $pdo = new PDO("mysql:host=localhost;dbname=crm", "root", "root");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("SET NAMES latin1");`

并且 User.php 在 index.php 中也是 required_once

用户.php

class User
    {
        public function userInfo($var)
        {
            $userId = $_SESSION['user_id'];
            $query = $pdo->prepare("SELECT ? FROM users WHERE id = '".$userId."' LIMIT 1");
            $query->execute(array($var));
            $result = $query->fetch();

            return $result[$var];
        }
    }

但是 PHP 给了我一个错误,即 $pdo 是 User.php 中未定义的变量。我做错了什么?

【问题讨论】:

  • 您的变量 $pdo 超出了您的类方法的范围。

标签: php mysql class pdo


【解决方案1】:

就像@Rizier123 所说的 $pdo 超出了范围。我只是将 PDO 对象与该方法一起传递。所以它看起来像这样。

class User
{
    public function userInfo($var, PDO $pdo)
    {
    $userId = $_SESSION['user_id'];
    $query = $pdo->prepare("SELECT ? FROM users WHERE id = '".$userId."' LIMIT 1");
    $query->execute(array($var));
    $result = $query->fetch();

    return $result[$var];
    }
}

然后,当您调用 $user->userInfo($var) 时,只需传入您的 $pdo 对象,例如 $user->userInfo($var, $pdo);

所以所有的东西都是这样的:

$user = new User();

$userInfo = $user->userInfo($var,$pdo);

【讨论】:

  • 感谢您的快速回答。我对类和函数有点陌生。所以这很有帮助 - 现在它正在工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2011-07-05
  • 2015-10-24
  • 2012-05-11
  • 1970-01-01
  • 2013-05-13
相关资源
最近更新 更多