Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CMS i classa db
Forum PHP.pl > Forum > PHP
tamin
Witam !

Powiedzmy ze mam klase kernel a w niej includuje pliki z innymi klasami:

$this->db = new db($dbhost, $dbuser, $dbpass, $dbname, &$this->error);

I wtedy w index.php po:
$kernel = new kernel;
moge uzywac $kernel->db

No i wszystko bylo ok do momentu w ktorym musialem uzyc 2 zapytan do bazy jedno a pozniej w nim drugie. I wtedy przy wykonywaniu zapytania wewnatrz tego drugiego (w petli) powstaje blad.

while($array = $kernel->db->fetch_row())
{
i tutaj powinno byc drugie zapytanie ale jak dam znowu:
$kernel->db->query("SELECT....");
}
To powstaje blad.

Pomyslalem ze trzeba zrobic $db2 = new db;
U mnie wyglada to tak:
$db2 = new db($kernel->dbhost, $kernel->dbuser, $kernel->dbpass, $kernel->dbname, &$kernel->error);

Mysle ze da sie to wszystko zrobic ladniej i lepiej. Macie jakies pomysly?
Glownie chodzi mi o to ze nie chce dawac mozliwosci zrobienia $kernel->dbpass. A to jest mi tylko do new db potrzebne...

A jak bedzie potrzeba zrobic 5x takie cos. To bardzo dlugo trwa i podnosi czas wykonywania skryptu.
rzseattle
Pewnie dlatego ze wynik zapytania podstawiasz pod jedna zmienna w obiekcie. Najlepiej by bylo gdyby obiekt db zwracal wynik zapytania (jako sql resource lub jakis obiekt) o dopiero na nim bys operowal:

Czyli zamiast twojego kodu cos w stylu:

[php:1:d30d5e4a90]<?php
$array = $kernel->db->getArray( $query );
foreach( $array as $value)
{
//i tutaj powinno byc drugie zapytanie ale jak dam znowu:
$result = $kernel->db->query("SELECT....");
}
?>[/php:1:d30d5e4a90]

Jak bys chcial dokladniej przyjzec takiemu rozwiazaniu to na dole masz link do ADoDB.
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.