Jak mogę programowo uzyskać prefiks bazy danych Joomla za pomocą php?

13

Czasami uzyskuję dostęp do Joomla DB za pomocą zewnętrznych skryptów. Problemem jest to, że jeśli kiedykolwiek będę musiał zmienić prefiks, będę musiał ponownie edytować moje skrypty.

Czy istnieje sposób programowego określenia prefiksu bazy danych Joomla przy użyciu php? Jeśli tak to jak?

Próbuj dalej
źródło

Odpowiedzi:

16

Prefiks można uzyskać w następujący sposób:

W przypadku Joomla 2.5 użyj:

$app = JFactory::getApplication(); 
$prefix = $app->getCfg('dbprefix');

W przypadku Joomla 3.2 użyj:

$app = JFactory::getApplication(); 
$prefix = $app->get('dbprefix');

Ale dokumentacja Joomla zaleca, aby nigdy nie modyfikować prefiksu. Wiem, że niektóre oprogramowanie do tworzenia kopii zapasowych umożliwia dokonanie zmiany w trakcie przywracania, ale nie lekceważ potencjalnie zaangażowanej pracy.

Źródło: http://docs.joomla.org/How_to_determine_your_database_prefix

tim.baker
źródło
4
Dokumentacja Joomla nie oznacza, że ​​nigdy nie wolno modyfikować prefiksu db_. Mówi tylko, aby nie zmieniać wartości w globalnych ustawieniach konfiguracji, ponieważ spowoduje to oczywiście uszkodzenie witryny - przez utratę połączenia z bazą danych. Zmiana wartości w com_config nie jest uważana za zmianę przedrostka db, ponieważ nie wprowadza żadnych zmian w samej bazie danych. Prefiks bazy danych można zmienić, zakładając, że ktoś wie, co robi.
FFrewin
4

Jeśli uzyskujesz dostęp do Joomla DB za pomocą zewnętrznych skryptów, być może nie chcesz inicjować wszystkich rzeczy Joomla tylko po to, aby uzyskać prefiks bazy danych. Możesz więc wymagać pliku konfiguracyjnego w skrypcie, utworzyć instancję klasy JConfig i uzyskać dbprefix

require_once $path_to_joomla_folder . "/configuration.php";
$config = new JConfig;
$dbprefix = $config->dbprefix;
csbenjamin
źródło