Autor Zpráva
Pavel Vodnář
Profil *
Z jakeho duvodu nemusi fungovat:

echo mysql_error(); 
Joker
Profil
Cože? Jak „nemusí fungovat“?
__construct
Profil
Pavel Vodnář:
Úlohou tej funkcie je zobraziť chybovú hlášku predchodzej operácie. V PHP manuále si pozri popis RETURN - vracia chybovú hlášku, alebo prázdny reťazec. Keď nepoužiješ pripojenie MySQL a zavoláš „len tak“ funkciu mysql_error() tak vráti false.
Pavel Vodnář
Profil *
když mám chybu v kodu nevypisuje mi to chybove hlašky a ani echo mysql_error(); mi nic nevypiše - jakto?
roberta
Profil
nekonektuješ (mysql_connect) sa náhodou viackrát do mysql databázy?
jenikkozak
Profil
Pavel Vodnář:
- Protože Excel nepochopil, že nejde o řetězec? Ještě mě napadá, že problém může být v tom, že mysql_error() nevrací chyby typu neuzavřený <div> a podobně.
- Podívej se, co ta funkce vlastně dělá.
- A nebo je vypnuté zobrazování chybových hlášek na serveru? Vlákno o zapnutí chybových hlášek existuje i tady na diskusi.
Pavel Vodnář
Profil *
roberta:
ano konektuji - jak se tedy připojit k DB jinde v kódu aby jsem nekonektoval (mysql_connect)?
ShiraNai7
Profil
Pavel Vodnář:
jak se tedy připojit k DB jinde v kódu aby jsem nekonektoval

Připojit se do databáze bez připojení? Zajímavé.

Budeš muset zavést nějakou správu jednotlivých připojení k databázi.

Např takovýto jednoduchý databázový wrapper.
(který navíc automaticky detekuje mysql_error)

Takže namísto současného HLAVNÍHO mysql_connect(), uděláš toto:

// vložení db wrapperu
require 'db_wrapper.php'; // adresu změnit podle skutečné cesty k souboru s wrapperem!

// vytvoření hlavního připojení
db::$m = new db('server', 'uzivatel', 'heslo', 'databaze');



Dále v kódu namísto současných mysql_query() a mysql_fetch_assoc() a tak dále, budeš používat HLAVNÍ připojení takto:

$dotaz = db::$m->query('SELECT * FROM tabulka WHERE 1'); // ukázkový SQL dotaz
while($radek = db::$m->row($dotaz)) {
  // nějaké operace s $radek
}



A nakonec jak použít na chvíli úplně jiné připojení, které VŮBEC NEOVLIVNÍ naše hlavní připojení? Snadno:

// vytvoříme nové připojení, které je úplně izolováno od hlavního
$jine_pripojeni = new db('nejakyserver', 'uzivatel', 'heslo', 'databaze');

// a můžeme vesele provádět dotazy na tomto připojení
$dotaz = $jine_pripojeni->query('SELECT neco FROM tabulka WHERE podminka');
while($radek = $jine_pripojeni->row($dotaz)) {
  // nějaké operace s $radek
}



Poznámky:

~ třída je psaná pro PHP 5 a novější
~ je jen ukázková a úplně jednoduchá, pro větší projekty se hodí sofistikovanější wrapper (který mám ale pro tento případ by to byl overkill)
~ jsem si vědom toho, že by tento problém s přepisováním implicitního připojení šel vyřešit znovupřipojením po dokončení práce s novým, nicméně to nepovažuji za dobrou praktiku

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0