【问题标题】:Can't connect to database in namespaces classes [duplicate]无法连接到命名空间类中的数据库[重复]
【发布时间】:2019-09-15 10:42:25
【问题描述】:

我连接到数据库然后使用类,我不能在那里使用数据库.. 我使用命名空间..我是初学者,对此了解不多。

我试图寻找解决方案,但找不到任何帮助。如果有帮助,请指导我学习任何教程。

server.php

//Connect to database
$host = 'localhost';
$db   = 'market';
$user = 'root';
$pass = '';
$dsn = 'mysql:host=localhost;dbname=market';
try {
    $pdo = new \PDO($dsn, $user, $pass);
    // set the PDO error mode to exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch(\PDOException $e)
{
    echo "Connection failed: " . $e->getMessage();
}

index.php

require 'server.php';
require 'vendor/autoload.php';
use App\Product;
$product= new Product;
$product->all();

product.php

namespace App;
Class Product
{
protected $rate;
protected $name;
protected $cost;
public function all()
{
    $sql = 'SELECT product,price,rating FROM products';
    $q = $pdo->query($sql);
}

我希望它知道 $pdo 是什么,因为我需要 index.php 中的 server.php 但它抛出:“致命错误:Uncaught Error: Call to a member function query() on null in Market\src\Product.php:14 请指导我如何在我的课程中连接到数据库..

【问题讨论】:

    标签: php pdo namespaces


    【解决方案1】:

    移动你的要求'server.php'; 在 Product 类的 all () 函数中,它应该像这样工作:

    namespace App;
    Class Product
    {
        protected $rate;
        protected $name;
        protected $cost;
        public function all()
        {
            require_once ('server.php');
            $sql = 'SELECT product,price,rating FROM products';
            $q = $pdo->query($sql);
        }
    }
    

    【讨论】:

    • 同样的问题。我还确保调用了 server.php。仍然没有声明 pdo
    • 在 server.php 文件中声明 $pdo = null;在尝试 bloc 之前
    【解决方案2】:

    快速浏览一下,因为在使用 pdo 对象时缺少 global 关键字可能是您的问题

    尝试全局 $pdo;在你的 all() 函数的顶部

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 2021-04-06
      • 2015-07-05
      • 2019-04-01
      • 2016-07-30
      • 2018-10-22
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      相关资源
      最近更新 更多