NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: 2x select ?

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Marek Burda
Člen
Avatar
Marek Burda:26.4.2017 18:32

Zdravím :) Mám vytvorený jeden select na db1

$select = mysql_query("SELECT * FROM xaxax1 WHERE xaxa ;");

Ten samozrejme spracovávam sem

$row = mysql_fetch_assoc($select);

Ak ale potrebujem selectovať z dvoch db v jednom kóde ako to uskutočniť ?
Čiže niečo takéto :

$select2 = mysql_query("SELECT * FROM xaxax2 WHERE xaxa ;");

Skúšal som selectovať z dvoch naraz no neúspešne poprípade to len zle vypisujem. Ďakujem za odpoved

 
Odpovědět
26.4.2017 18:32
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:26.4.2017 18:40

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_as­soc, 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.

Editováno 26.4.2017 18:43
Nahoru Odpovědět
26.4.2017 18:40
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Burda
Člen
Avatar
Marek Burda:26.4.2017 18:45

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.

 
Nahoru Odpovědět
26.4.2017 18:45
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:26.4.2017 18:46

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

Nahoru Odpovědět
26.4.2017 18:46
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Burda
Člen
Avatar
Marek Burda:26.4.2017 18:49
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

 
Nahoru Odpovědět
26.4.2017 18:49
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:26.4.2017 18:49

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

Nahoru Odpovědět
26.4.2017 18:49
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Burda
Člen
Avatar
Marek Burda:26.4.2017 18:51

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
 
Nahoru Odpovědět
26.4.2017 18:51
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:26.4.2017 18:53

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.

Editováno 26.4.2017 18:56
Nahoru Odpovědět
26.4.2017 18:53
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Marek Burda
Člen
Avatar
Marek Burda:26.4.2017 19:07

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

 
Nahoru Odpovědět
26.4.2017 19:07
Avatar
Matúš Petrofčík:26.4.2017 19:09

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.

Nahoru Odpovědět
26.4.2017 19:09
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:26.4.2017 19:10

... $row tam môže byť len jeden

Čo máš na mysli?

Nahoru Odpovědět
26.4.2017 19:10
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Marek Burda
Matúš Petrofčík:26.4.2017 19:17

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.

Editováno 26.4.2017 19:18
Nahoru Odpovědět
26.4.2017 19:17
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík:26.4.2017 19:28

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

Nahoru Odpovědět
26.4.2017 19:28
obsah kocky = r^2 ... a preto vlak drnká
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.