Diskuze: 2x select ?
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Potrebuješ 2 rôzne pripojenia na databázu. Niečo ako $connectionOne a $connectionTwo, a jeden select vykonávať na tom prvom pripojení, a druhý na druhom pripojení.
Preštudoval si si ten tutoriál na databázu? Pretože ten select ti nevykonáva mysql_fetch_assoc, ale mysql_query, nie ako si to popísal ty.
$result = mysql_query("SELECT * FROM xaxax1 WHERE xaxa"); // vykoná SQL príkaz, prípadny výsledok vráti do premennej $result, bodkočiarku na konci SQL príkazu nepotrebuješ (lebo je iba jeden).
$row = mysql_fetch_assoc($result); // spracuješ vrátený výsledok predchádzajúceho príkazu
Výber databázy s ktorou ideš pracovať sa robí príkazom mysql_select_db, to by si musel počas behu programu prepínať medzi tými databázami. S PDO je to jednoduchšie.
No áno ja jeden select už mám a funguje pekne no teraz potrebujem selectovať znovu ale z druhej databázy. Akonáhle ale znovu použijem mysql_fetch_assoc tak mi to vyhodí error pretože mysql_fetch_assoc môže byť len jeden.
A prestaň používať mysql_ funkcie, radšej to mysqli_, najlepšie PDO. Ak máš problém s ich používaním ako si už niekde písal, daj vedieť čo za chybu ti to vypisuje a radšej to spojazdníme
mysqli_select_db() expects exactly 2 parameters
.. stle to má problémy so selectovaním a pdobne akonáhle príkazy pomením na mysqli
Áno, mysql_fetch_assoc môžeš použiť iba raz, ten ani nevykonáva SQL príkaz! Ako som písal vyššie:
... ten select ti nevykonáva mysql_fetch_assoc, ale mysql_query, nie ako si to popísal ty.
Ďalej som písal:
Výber databázy s ktorou ideš pracovať sa robí príkazom mysql_select_db, to by si musel počas behu programu prepínať medzi tými databázami.
Akonáhle to zmením s5 na mysql_select_db tak znovu dostávam chyby
mysql_select_db(): Access denied for user
mysql_select_db(): A link to the server could not be established
To bude tým, že nestačí pridať k príkazom písmenko i. Pracuje sa s triedou mysqli, na ktorú sú vytvorené aliasy/funkcie k jej metódam.
Ak si pozrieš do dokumentácie, dajme tomu mysqli_select_db: http://php.net/…elect-db.php, zistíš, že pri objektovom použití stačí jeden parameter - názov db. Pokiaľ použiješ funkciu, musíš predať dva parametre, pripojenie na databázu a názov konkrétnej databázy.
U mysql_select_db: http://php.net/…elect-db.php sa predávajú 1 alebo 2 parametre. Prvý je názov db a druhý je pripojenie na databázu, ktoré si získal pripojením na databázu.
Okey tak už sa mi úspešne podarilo napojiť to celé na mysqli Nice Teraz teda znovu - ako začnem jednoducho selectovať niečo z inej table ? Pretože ako amatér ťa pcoohpím jenddoucho tak že mám znovu napísť nový connect to ale nemení nič natom že $row tam môže byť len jeden
Z dokumentácie som vytvoril takýto príklad, ja som to netestoval, ale chcem ukázať princíp prepínania medzi DB s pomocou mysql_.
<?php
// pripojenie na DB server
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
// výber prvej DB
mysql_select_db('databaza1', $link);
// SQL príkaz do prvej DB
$result = mysql_query('SELECT * WHERE 1=1');
$row = mysql_fetch_assoc($result);
// ďalšie spracovanie výsledku, napr. výpis...
// zmena na druhú DB
mysql_select_db('databaza2', $link);
// SQL príkaz do druhej DB
$result = mysql_query('SELECT * WHERE 1=1');
$row = mysql_fetch_assoc($result);
// ďalšie spracovanie výsledku, napr. výpis...
V PHP 7 už ale mysql_ nie je, mal by si používať radšej mysqli_ alebo PDO.
... $row tam môže byť len jeden
Čo máš na mysli?
Príklad u mysqli, objektovo:
<?php
// pripojenie na DB server, všimni si rovno vybranú databázu "test"
$mysqli = new mysqli("localhost", "my_user", "my_password", "test"); // vytvorenie objektu
// SQL príkaz do prvej DB
$result = $mysqli->query("SELECT * WHERE 1=1");
$row = $result->fetch_row();
// ... ďalšie spracovanie, výpis, neviem čo...
// zmena DB z "test" na "world"
$mysqli->select_db("world"); // <---------
// SQL príkaz do druhej DB
$result = $mysqli->query("SELECT * WHERE 1=1");
$row = $result->fetch_row();
// ... ďalšie spracovanie, výpis, neviem čo...
// ukončenie spojenia
$mysqli->close();
Príklad na mysqli s pomocou funkcií mysqli_:
<?php
// pripojenie na DB server, všimni si rovno vybranú databázu "test"
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
// SQL príkaz do prvej DB
$result = mysqli_query($link, "SELECT * WHERE 1=1");
$row = mysqli_fetch_row($result);
// ... ďalšie spracovanie, výpis, neviem čo...
// zmena DB z "test" na "world"
mysqli_select_db($link, "world"); // <---------
// SQL príkaz do druhej DB
$result = mysqli_query($link, "SELECT * WHERE 1=1");
$row = mysqli_fetch_row($result);
// ... ďalšie spracovanie, výpis, neviem čo...
// ukončenie spojenia
mysqli_close($link);
Zdroj: http://php.net/…elect-db.php, netestoval som, snáď som ukázal ako na to.
Tak sme prišli na to, že Marek chce druhý select z tej istej databázy, ale z inej tabuľky
Pokračuj tu: https://www.itnetwork.cz/php/databaze
Potom tu: https://www.itnetwork.cz/mysql
Zobrazeno 13 zpráv z 13.