Ich versuche, auf eine Liste von Kategorien und deren Inhalt zuzugreifen. Ich habe eine Klasse namens „Kategorie“. Ich bekomme immer wieder diesen Fehler. Das Seltsame ist, dass ich den gleichen Code bisher an zwei anderen Stellen ohne Probleme verwendet habe. Hier habe ich lediglich den Code wiederverwendet und alle Variablen geändert.
Fatal error: Call to a member function prepare() on null
Das ist der Code meiner Klasse:
<?php class Category { public function fetch_all() { global $pdo; $query = $pdo->prepare("SELECT * FROM dd_cat"); $query->execute(); return $query->fetchAll(); } public function fetch_data($cat_id) { global $pdo; $query = $pdo->prepare("SELECT * FROM dd_cat WHERE cat_id = ?"); $query->bindValue(1, $cat_id); $query->execute(); return $query->fetch(); } } ?>
Dies ist der Code, den ich aufrufen möchte:
<?php session_start(); //Add session_start to top of each page// require_once('includes/config.php'); require_once('includes/header.php'); include_once('includes/category.php'); ?> <link rel="stylesheet" href="css/dd.css"> <div id="menu"> <a class="item" href="drop_index.php">Home</a> - <a class="item" href="create_topic.php">Create a topic</a> - <a class="item" href="create_cat.php">Create a category</a> <div id="userbar"> <?php if( $user->is_logged_in() ) { echo 'Hello ' . $_SESSION['user_name'] . '. Not you? <a href="logout.php">Sign out</a>'; } else { echo '<a href="login.php">Sign in</a> or <a href="index.php">create an account</a>.'; } ?> </div> </div> <?php $category = new Category; $categories = $category->fetch_all(); ?> <div id ="wrapper"> <h1>Categories</h1> <section> <ul> <?php foreach ($categories as $category) { ?> <li><a href="category.php?id=<?php echo $category['cat_id']; ?>"> <?php echo $category['cat_title']; ?></a> </li> <?php } ?> </ul> </section> </div> <?php require_once('includes/footer.php'); ?>
在 ---- 模型中: 添加
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
将
class ----- extends Model
更改为class ----- extends Eloquent
看起来您的
$pdo
变量尚未初始化。 我在您上传的代码中看不到您在何处初始化它。在调用类方法之前,请确保在
全局范围
中创建一个新的 PDO 对象。 (由于您在 Category 类中实现方法的方式,您应该在全局范围内声明它)。