PDO fonksiyon içinde çalışmıyor

2 Cevap php

Ben bir PDO deyimi hazırlayın kullanarak bir MySQL tablodan bir sayfanın içeriği çekmek için bir işlev yapmaya çalışıyorum. Benim kod ben tanımlanan fonksiyonu sadece para cezası dışında çalışıyor, ama bunu ne olursa olsun işlevi içinde çalışmaz - Ben aşağıdaki hatayı alırsınız:

Fatal error: Call to a member function prepare() on a non-object in /home/tappess1/public_html/pages/stations.php on line 6

İşte benim PHP:

function getPageContent($page) {
        $st = $db->prepare("SELECT * FROM content WHERE title LIKE ?");
        $st->execute(array($page));
        $pageContent = $st->fetch();
        $text = wordwrap($pageContent['content'], 100, "\n");
        $tabs = 4;
        $text = str_repeat(chr(9), $tabs) . str_replace(chr(10), chr(10) . str_repeat(chr(9), $tabs), $text);
        echo $text;
    }

ve daha sonra

<?php getPageContent(Main);?>

Hatta sadece getPageContent () çağıran ve ben aynı hatayı alırsınız, yerine deyimi hazırlamak bir sorgu kullanarak denedim.

Teşekkürler!

2 Cevap

Eğer fonksiyonun scope dışında $db değişken erişmek için çalışıyoruz.

$db = new PDO.... fonksiyonu içinde veritabanını yeniden başlatmak, ya da - ya sizin durumunuzda muhtemelen daha iyi ve daha kolay - global değişken ithalat:

function getPageContent($page) {
  global $db;

Nerede ve nasıl en iyi küresel veritabanı nesnesini saklamak için tartışma bir sürü konu. Bunu içine almak istiyorsanız, here (diğerleri de, SO vardır) başlamak için bir yerdir. Sadece PHP içine alıyoruz ama, ben genel değişkeni kullanarak gayet iyi olduğunu söyleyebilirim.

Değişken $ db fonksiyonu içinde bilinmemektedir.