无法连接到名称空间类中的数据库

时间:2019-04-25 23:13:41

标签: php pdo namespaces

我连接到数据库,然后使用class,我不能在那里使用数据库.. 我使用名称空间..我是一个初学者,对此我不太了解。

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

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 请指导我如何在班级中连接数据库..

2 个答案:

答案 0 :(得分:0)

移动您所需的“ 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);
    }
}

答案 1 :(得分:0)

快速浏览一下,因为使用pdo对象时可能缺少global关键字

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