Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQLI] Błąd przy metodzie fetch_array
Forum PHP.pl > Forum > Przedszkole
Gość
Witam,
Mam pewien zbiór klas. Obiekty mają odpowiadać za obsługę kilku języków na stronie. Podział jest następujący:

abstract PropertyTemplates (klasa abstrakcyjna - przygotowawcza, wspólna wszystkim klasom dziedziczącym po niej):
Kod
require_once ('class/MySQL.class.php');
require_once ('class/Language.class.php');
require_once ('class/Browser.class.php');

abstract class PrepareTemplates
{

    protected $objSql;
    protected $objBrowser;
    protected $objLanguage;

    public function __construct()
    {
        $this->objSql = MySQL::connect();
        $this->objBrowser = new Browser();
        $this->objLanguage = new Language();

    }


    public function LanguageVersion()
    {
        return $this->objLanguage->GetLanguage();
    }

    public function UserBrowser()
    {
        return $this->objBrowser->GetBrowserName();
    }


}


Po tej klasie dziedziczą klasy odpowiadające za pobranie odpowienich danych w zależności od wybranej wersji językowej np LeftMenuTemplate:

Kod
require_once ('class/PrepareTemplates.class.php');
require_once ('interfaces/Templates.interfaces.php');

class LeftMenuTemplate extends PrepareTemplates implements Templates
{
    
public $sql;    
    
    public function __construct()
    {
        parent::__construct();
    }

    public function Execute()
    {
        $sqlQuery = "SELECT * FROM links_left_'".$this->LanguageVersion()."'";
        $query = $this->objSql->query($sqlQuery);
                $fetch = $query->fetch_array(MYSQLI_ASSOC); //tutaj miala byc petla while, ale sa problemy z pobraniem za pomoca fetch_array
    }


Niestety PHP zwraca mi błąd dla linii którą zakomentowałem w klasie PrepareTemplates: Call to a member function fetch_array() on a non-object . Pewnie w zły sposób odwołuję się do metody fetch_array klasy mysqli, bo w innym miejscu bez dziedziczenia wszystko działa prawidłowo np.

Kod
require_once ('class/MySQL.class.php');
$sql = MySQL::connect();
$zapytanie = "SELECT * FROM sessions WHERE sessions_identifer = '0b5c8pkm9ol101gnb87b2jpth6'";
$query = $sql->query($zapytanie);
$fetch = $query->fetch_array(MYSQLI_ASSOC);

print_r($fetch);


Gdzie robię więc błąd? Dodatkowo dla jasności dodaję też klasę MySQL:


Kod
class MySQL
{

    public static $connect = null;
    
    private static $db_host = 'localhost';
    private static $db_user = 'root';
    private static $db_pass = 'AX1BY2CZ3';
    private static $db_name = 'sucza_database';


    public static function connect()
    {
        if (is_null(self::$connect))
        {                                                            
            self::$connect = new mysqli (self::$db_host, self::$db_user, self::$db_pass, self::$db_name);
            self::$connect->set_charset("utf-8");
            
        }
        return self::$connect;
        
    }
    
    public static function AddSQL()
    {
        $GLOBALS['sql_count']++;
    }
    
    public static function GetCountSQL()
    {
        return $GLOBALS['sql_count'];
    }


}
Gość
Sprostowanie: PHP zwraca błąd dla LeftMenuTemplate, a nie klasy Prepare[...]. Błąd jest dokladnie tam gdzie wstawiłem komentarz w kodzie.
bregovic
Hmm... Co jest nie tak z tym zapytaniem? (podpowiedź: apostrofy...?)
  1. <?php
  2. $sqlQuery = "SELECT * FROM links_left_'".$this->LanguageVersion()."'";
  3. ?>
Gość
Racja, szkolny błąd. Dziękuję za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.