Práce s více databázemi

Školení, která pořádám

Obvykle jsou všechna data, se kterými potřebujeme ve webové aplikaci pracovat, uložena v jedné databázi. Za určitých okolností ale některá data mohou být uložena v jiné databázi – třeba když naše aplikace používá databázi uživatelů společnou pro víc webů. Jak v takovém případě postupovat?

V PHP je k dispozici funkce mysql_db_query, která ale není příliš šikovná, protože po provedení dotazu nenastaví aktivní databázi zpět na původní. Pokud tedy více databází nepoužíváme rovnoměrně (tehdy by se vyplatilo používat mysql_db_query všude), je lepší zvolit jiný přístup.

<?php
// nešikovné - databáze uzivatele po dotazu zůstane aktivní
mysql_db_query("uzivatele", "SELECT * FROM uzivatele WHERE id = $id");

// využití možnosti MySQL klást dotazy do jiné databáze
mysql_query("SELECT * FROM uzivatele.uzivatele WHERE id = $id");
?>

Druhá možnost je popsaná v MySQL dokumentaci.

Jiná situace samozřejmě nastává v případě, kdy běží druhá databáze na jiném serveru nebo k ní nemáme přístup pod stejnými přihlašovacími údaji. V tom případě je nutné otevřít druhé připojení a funkci mysql_query proměnnou s tímto připojením předávat.

Přijďte si o tomto tématu popovídat na školení Návrh a používání MySQL databáze.

Jakub Vrána, Výuka, 14.10.2005, diskuse: 3 (nové: 0)

Diskuse

ikona dgx:

Možná by bylo lepší jak příklad uvést:

mysql_query("SELECT * FROM `databaze`.`tabulka` WHERE id = $id");

ne? ;)

DFly:

zase nekdo objevil ameriku...
v intranetech se databaze.tabulka pouziva velmi casto - hlavne ve spojeni s databaze.tabulka AS dt

ikona spaze:

mysql_db_query() ChangeLog http://php.net/mysql_db_query:
Version: 4.0.6
Desc: This function is deprecated, do not use this function. Use mysql_select_db() and mysql_query() instead. 

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.