Kako povezati 2 mysql bazi hkrati?

Pozdravljeni,

Na internetu sem našel nekaj primerov za povezavo dveh baz (Multiple mysql database). Bazi sta na istem strežniku. Nekje sem zasledil, da bazi lahko združim tako, da se doda new pri povezavi s serverjem. Primer: $povezava = new mysqli_connect('localhost',' ',' ',' ');. To sem tudi poskusil vendar mi ne deluje.

Za trenutno branje ene povezave uporabljam spodnjo kodo. ( Spodnja koda deluje samo za eno bazo.

Če na kratko povzamem želim, dobiti iz obeh baz podatke istočasno in jih prikazati.

$povezava = mysqliconnect('localhost',' ',' ',' ');
mysqli
set_charset($povezava,"utf8");

mysqliselectdb($povezava,"TABELA");

$preberi = "SELECT * FROM TABELA Where imeurl='$imeurl' ";
$preberi = $povezava>query($preberi);
$preberipodatek = $preberipodnapiseinfo->numrows;

10 odgovorov

Tabela ali baza?
Sprašuješ glede baze v kodi pa omenjaš table.

PS: Z mysqliselectdb izbiraš bazo ne tabelo.

Mogoče sem malce preveč zakompliciral... Bom probal malce drugače zapisati. Prebrati želim obe bazi hkrati (ime prve baze je baza1 in ime druge baze je baza2) iz obeh baz pa želim prebrati poljubne tabele ( iz baze1 -> Tabela 1 in iz baze 2 -> Tabela 2 ). Podatke pa želim prikazati istočasno na strani iz obeh tabel ( Tabela 1 in Tabel 2 ). Torej podatke iz tabele 1 ( se nahaja v bazi 1) in iz tabele 2 ( se nahaja v bazi 2 ) želim prikazati na strani istočasno.

Mogoče bo tako bolj razumljivo. Želel sem tako ( vendar to ne deluje ):

$povezava1 = mysqliconnect('localhost',' ',' ',' '); in $povezava2 = new mysqliconnect('localhost',' ',' ',' ');

Naredi še eno povezavo preko druge variable

$povezava1
In
$povezava2

Lahko se povežeš preko ene povezave, samo user ki se povezuje imore imeti pravice za dostop do obeh baz.

Nato dostopaš tako:

SELECT ... FROM BAZA1.TABELA1

lpd

11

pavarti kako pa lahko to naredim? Se to naredi v phpmyadminu?

2

če imaš cPanel, greš tam na MySQL databases, in če imaš dve bazi npr

baza1
baza2

user1
user2

baza1 (user1)
baza2 (user2)

dodaš npr k bazi baza1 še user2 da bo

baza1(user1, user2)
baza2(user2)

in potem z user2 delaš query takole

SELECT * FROM baza1.imetabele prva, baza2.imetabele druga WHERE prva.imepolja = 'Ljubljana' and druga.imepolja='Ljubljana'

Če imaš to lokalno greš pa v phpmyadmin in izbereš bazo na kateri želiš dodati še drugega uporabnika

Nato v SQL zavihku vpišeš npr

GRANT ALL PRIVILEGES ON baza1.* TO 'user2'@'%' WITH GRANT OPTION;

Lahko mu daš tudi drugačne pravice, namesto GRANT ALL daš GRANT SELECT

Če mu želiš dati samo SELECT pravice in samo NA ENO TABELO v bazi daš npr

GRANT SELECT PRIVILEGES ON baza1.imetabele TO 'user2'@'%' WITH GRANT OPTION;

Pisal sem po spominu (postopek), stavke pa sem kopiral tako da so možne napake v postopku.

Lahko pa vprašaš če kaj ne bo šlo in daš kak screenshot zraven za lažjo predstavo.

1

Gogy najlepša hvala. Bom poskusil in javim.

Ena možnost bi bila mogoče tudi da narediš view, ki zduži podatke iz obeh baz in obeh tabel in potem delaš samo s tem view-om.

Ma dejte že nehat izumlat, pustmo to, da verjetno sploh ne potrebuje dveh baz, ampak dobil je obe rešitvi, 2 povezavi ali dodajanje baze v query.

Mal se skulirite preden kdo začne kakšen extension za mysql pisat, ki bo sam ugotavljal iz katere baze želi klopar dobit podatke...

9

Gogy najlepša hvala. Mi je uspelo.