PHP: Z�le�itosti datab�z� - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<Z�sk�n� PHPInstalace>
view the version of this page
Last updated: Thu, 15 Jul 2004

Kapitola 49. 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 . 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. 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  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 (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());



add a note add a note User Contributed Notes
Z�le�itosti datab�z�
knb at gfz-potsdam dot de
11-Oct-2004 09:53
This is a crucial piece of information for SYBASE users:

If you are using the free, but old, 11.x client libs from sybase,
 then compile with option  "--with-sybase-ct=$SYBASE"
substitute $SYBASE with the appropriate directory name.

option --with-sybase (without ct) can somehow be used to talk to old MS-SQL servers, but only with the 11.x client libs.

If you are using free, or have legally obtained, 12.x client libs from sybase, then compile with option  "--with-sybase-ct=$SYBASE/$SYBASE_OCS"
substitute $SYBASE/$SYBASE_OCS with the appropriate directory name.
Simon
05-Nov-2003 12:38
You can connect to Microsoft SQL Server from PHP without using ODBC. It's even detailed in the PHP docs! Wow! You can find the details at
jastern at uci dot edu
26-Sep-2002 09:24
i made some notes of trials/tribulations setting up PHP (on a linux redhat 7.3 box) to connect (via interbase/ODBC client libraries) to an interbase server on another machine:



hope it helps someone..
michal at tuxy dot org
27-Feb-2002 07:22
You can approch problem with mysql and pthread by recompiling/linking apache (1.3.2x) with pthread library instead of removing pthread from mysql. This solved my problem with apache dumping core with php (3.0.18 and php 4.1.1) and mysql.
You can use ldd to check if apache is compiled with pthreads.
Hope that helps.

<Z�sk�n� PHPInstalace>
 Last updated: Thu, 15 Jul 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2004 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Sun Nov 14 23:09:54 2004 Local time zone must be set--see zic manual page