|
|
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
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.
| |