|
|
 |
Kapitola 47. Záležitosti databází
Tato sekce se zabývá častými otázkami okolo vztahu PHP a databází.
Ano, PHP dnes může virtuálně přistupovat ke kterékoli dostupné databázi.
- 1.
Slyšel jsem, že lze z PHP přistupovat k Microsoft SQL Serveru. Jak?
- 2. Lze přistupovat k databázím Microsoft Access?
- 3.
Upgradoval jsem na PHP 4 a MySQL mi teď hlásí
"Warning: MySQL: Unable to save result set in ...". Co se děje?
- 4.
Po instalaci podpory sdíleného MySQL havaruje Apache v momentě, kdy
načítá libphp4.so. Lze to vyřešit?
- 5.
Proč dostávám chybu, která vypadá nějak takto:
"Warning: 0 is not a MySQL result index in <file>
on line <x>" nebo "Warning: Supplied argument is not
a valid MySQL result resource in <file> on line <x>?
1.
Slyšel jsem, že lze z PHP přistupovat k Microsoft SQL Serveru. Jak?
Na strojích s Windows můžete jednoduše použít zabudovanou podporu
ODBC a správný ovladač ODBC.
Na Unixových strojích můžete k přístupu na Microsoft SQL Servery
použít ovladač Sybase-CT, protože tyto protokoly jsou (alespoň
z většiny) kompatibilní. V Sybase připravili
volnou verzi potřebných knihoven pro
Linux. Pro jiné Unixové systémy musíte kontaktovat Sybase
k získání správných knihoven. Podívejte se také na odpověď na příští
otázku.
2. Lze přistupovat k databázím Microsoft Access?
Ano. Pokud pracujete pod Windows 9x/Me nebo NT/2000, všechny potřebné
nástroje již máte k dispozici - můžete použít ODBC a ovladače pro ODBC
k databázím Microsoft Access.
Pokud používáte PHP na Unixu a chcete komunikovat s databázemi
MS Access běžících na Windows, budete potřebovat ODBC ovladače pro
Unix. OpenLink Software má
unixové ovladače pro ODBC, které zde vyhoví. Existuje pilotní program,
kdy si můžete stáhnout zkušební kopii, která má neomezenou zkušební
dobu; ceny komerční verze s podporou začínají na 675 USD.
Jinou alternativou je použít SQL server, který má ODBC ovladače pro
Windows a použít ho k uložení dat, ke kterým pak můžete přistupovat
z aplikace Microsoft Access (pomocí ODBC) a z PHP (pomocí vestavěných
ovladačů), nebo použít souborový meziformát, kterému rozumí Access i
PHP (např. obyčejné soubory nebo databáze dBase).
K tomuto bodu Tim Hayes z OpenLink soiftware píše:
Použití jiné databáze jako meziformátu není dobrý nápad, pokud můžete použít
ODBC z PHP přímo na vaší databázi - např. pomocí ovladačů od OpenLink software.
Když meziformát použít musíte, OpenLink nyní uvolnil Virtuoso (virtuální
databázový stroj) pro WinNT, Linux a jiné unixové platformy. Navštivte
prosím naši website a zdarma si ho
stáhněte. |
Jednou z prověřených možností je použít MySQL a jeho ODBC ovladače
pro Windows a synchronizace databází. Steve Lawrence píše:
Nainstalujte si na svou platformu MySQL podle přiložených instrukcí.
Nejnovější verzi získáte na
www.mysql.com (stahujte z
nejbližšího zrcadla!). Není třeba žádná zvláštní konfigurace kromě
toho, že když instalujete databázi a konfigurujete uživatelský
účet, měli byste do pole "host" přidat % nebo název počítače
s Windows, na kterém chcete MySQL spouštět. Poznamenejte si název
serveru, uživatelské jméno a heslo.
Stáhněte si ovladač MyODBC pro Windows ze stránek MySQL. Nejnovější
verze je myodbc-2_50_19-win95.zip (k dispozici také verze pro NT,
stejně tak i zdrojový kód). Nainstalujte ho na počítač s Windows.
Funkci můžete otestovat pomocí přiložených utilit.
Vytvořte uživatelský nebo systémový dsn v administrátoru ODBC,
umístěném v ovládacích panelech. Zvolte název dsn, vložte název
počítače, heslo, port apod. pro databázi MySQL nakonfigurovanou
v kroku 1.
Nainstalujte plnou instalaci Accessu, což zajistí, že budou
k dispozici všechny doplňky; budete potřebovat alespoň podporu ODBC
a správu propojených tabulek.
A teď to nejzábavnější! Vytvořte novou databázi v Accessu. Klikněte
pravým tlačítkem v okně tabulek a vyberte "Propojit tabulky",
nebo pod nabídkou "Soubor" vyberte "Načíst externí data" a potom
"Propojit tabulky". Až se otevře dialog, vyberte soubory typu
ODBC. Zvolte systémový dsn a název dsn vytvořeného v kroku 3.
Vyberte tabulku k propojení, stiskněte "OK" a je to"!
Nyní můžete otevřít tabulku a přidat/smazat/upravovat data na vašem
MySQL serveru! Můžete také vytvářet dotazy, importovat/exportovat
tabulky do MySQL, vytvářet formuláře a sestavy atd.
Tipy a triky:
Můžete vytvořit tabulky v Accessu, exportovat je do MySQL a potom
propojit zpět. To urychluje návrh tabulek.
Když vytváříte tabulky v Accessu, musíte mít definován primární klíč
kvůli zápisu do tabulky. Ujistěte se, že jste primární klíč v MySQL
vytvořili před propojením do Accessu.
Pokud změníte tabulku v MySQL, musíte ji znovu připojit do Accessu.
Go to tools>add-ins>linked table manager,
cruise to your ODBC DSN, and select the table to re-link
from there. you can also move your dsn source around there,
just hit the always prompt for new location checkbox before
pressing ok.
3.
Upgradoval jsem na PHP 4 a MySQL mi teď hlásí
"Warning: MySQL: Unable to save result set in ...". Co se děje?
Nejspíše se stalo to, že bylo PHP 4 zkompilováno s volbout '--with-mysql'
bez specifikace cesty k MySQL. To znamená, že PHP používá svoji
vestavěnou klientskou knihovnu. Pokud na vašem systému běží aplikace
jako PHP 3 (jako paralelně běžící modul Apache) nebo auth-mysql,
používá jiné verze klientů MySQL, a je zde tedy konflikt dvou různých
verzí těchto klientů.
Překompilování PHP 4 s přidáním cesty k MySQL do parametru,
'--with-mysql=/your/path/to/mysql',
obvykle tento problém vyřeší.
4.
Po instalaci podpory sdíleného MySQL havaruje Apache v momentě, kdy
načítá libphp4.so. Lze to vyřešit?
To se stává, když jsou knihovny MySQL připojovány s použitím pthreads.
Ověřte to použitím "ldd". Pokud tomu tak je, stáhněte si balík MySQL
a zkompilujte zdrojové soubory, nebo překompilujte soubory z RPM
balíku a odstraňte přepínač, který zapíná threadový kód klienta.
Jeden z těchto způsobů by měl problém vyřešit. Potom překompilujte
PHP s novými knihovnami MySQL.
5.
Proč dostávám chybu, která vypadá nějak takto:
"Warning: 0 is not a MySQL result index in <file>
on line <x>" nebo "Warning: Supplied argument is not
a valid MySQL result resource in <file> on line <x>?
Pokoušíte se použít indentifikátor výsledku, který je 0. Nula indikuje,
že váš dotaz z nějakého důvodu selhal. Po odeslání dotazu musíte
provést kontrolu na chyby, dřív než se pokusíte použít vrácený
indentifikátor výsledku. Správný způsob, jak to udělat, je popsán
následujícím kódem:
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
} |
or
$result = mysql_query("SELECT * FROM tables_priv")
or die("Bad query: ".mysql_error()); |
User Contributed Notes Záležitosti databází |
 |
| There are no user contributed notes for this page. |
| |