Práce s více databázemi
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.
Diskuse
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
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.

Diskuse je zrušena z důvodu spamu.

