|
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()); |
| |