Rumah  >  Soal Jawab  >  teks badan

Ralat maut: Memanggil fungsi ahli prepare() pada objek nol

Saya cuba mengakses senarai kategori dan kandungannya. Saya mempunyai kelas yang dipanggil "Kategori". Saya terus mendapat ralat ini. Perkara yang aneh ialah saya telah menggunakan kod yang sama di dua tempat lain setakat ini tanpa sebarang masalah. Apa yang saya lakukan di sini ialah menggunakan semula kod dan menukar semua pembolehubah.

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

Ini kod kelas saya:

<?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();
    }
}

?>

Ini adalah kod yang saya cuba hubungi:

<?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');
?>


P粉824889650P粉824889650344 hari yang lalu602

membalas semua(2)saya akan balas

  • P粉373990857

    P粉3739908572023-10-15 12:07:07

    Dalam ---- model: Tambah use JenssegersMongodbEloquentModel as Eloquent;

    akanclass ----- extends Model 更改为class ----- extends Eloquent

    balas
    0
  • P粉416996828

    P粉4169968282023-10-15 09:50:08

    Nampaknya pembolehubah $pdo anda belum dimulakan lagi. Saya tidak nampak di mana anda memulakannya dalam kod yang anda muat naik.

    Pastikan anda mencipta objek PDO baharu dalam 全局范围sebelum memanggil kaedah kelas. (Disebabkan cara anda melaksanakan kaedah dalam kelas Kategori, anda harus mengisytiharkannya dalam skop global).

    $pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

    balas
    0
  • Batalbalas