Diskuze: PDO - Fatal error: Call to a member function prepare() on a non-object

PHP PHP PDO - Fatal error: Call to a member function prepare() on a non-object American English version English version

Avatar
Vojta Pšenák
Redaktor
Avatar
Vojta Pšenák:

Ahoj, mám soubor head.php s tímto obsahem:

require_once 'databaze.php';
class Head
{
        public $id;
        function __construct($id)
        {
                $this->id = $id;
        }
        public static function doctype()
        {
                echo "<!DOCTYPE> \n";
        }
        public static function title()
        {
                require_once 'databaze.php';
                Databaze::dotaz('
            SELECT * FROM (title) WHERE (id) LIKE (?)
        ', array($id123));
        }
}

V souboru databaze.php je

class Databaze {

    private static $spojeni;

    private static $nastaveni = Array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    );

    public static function pripoj($host, $uzivatel, $heslo, $databaze) {
        if (!isset(self::$spojeni)) {
            self::$spojeni = @new PDO(
                "mysql:host=$host;dbname=$databaze",
                $uzivatel,
                $heslo,
                self::$nastaveni
            );
        }
        return self::$spojeni;
    }

    public static function dotaz($sql, $parametry = array()) {
        $dotaz = self::$spojeni->prepare($sql);
        $dotaz->execute($parametry);
        return $dotaz;
    }

}

Potom mám v index.php

<?php
$id = $_GET['id'];
$head = new Head($id);
$head->title();
?>

Háže to chybu

Fatal error:  Call to a member function prepare() on a non-object

Nevíte co mám špatně? Moc děkuju

Editováno 22.3.2014 12:48
 
Odpovědět 22.3.2014 12:48
Avatar
TsukiRa
Člen
Avatar
Odpovídá na Vojta Pšenák
TsukiRa:

A voláš někde

Databaze::pripoj($host, $uzivatel, $heslo, $databaze);

(připojil ses vůbec k té databázi)?

Editováno 22.3.2014 12:54
Nahoru Odpovědět  +1 22.3.2014 12:52
Někdy je lepší zůstat v pondělí v posteli než celý týden ladit pondělní kód.
Avatar
Vojta Pšenák
Redaktor
Avatar
Odpovídá na TsukiRa
Vojta Pšenák:

Já jsem ale debil... Moc dík

 
Nahoru Odpovědět 22.3.2014 17:20
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Vojta Pšenák
David Čápka:

Koukni na nové tutoriály pro začátečníky, řeší se tam databáze - http://www.itnetwork.cz/php/databaze

Nahoru Odpovědět 22.3.2014 18:01
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
mkub
Redaktor
Avatar
Odpovídá na Vojta Pšenák
mkub:

skus sa pozriet do tutorialov o OOP v PHP

 
Nahoru Odpovědět 22.3.2014 18:17
Avatar
mkub
Redaktor
Avatar
Odpovídá na David Čápka
mkub:

myslim, ze to nie je problem PDO, ako ani databaz, ale myslim, ze skor ma chybu v PHP kode, konkretne sa jedna o volanie cudzej metody z metody objektu

 
Nahoru Odpovědět 22.3.2014 18:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.