• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Połączenie z dwoma tabelami przez mysqli

Object Storage Arubacloud
0 głosów
364 wizyt
pytanie zadane 16 listopada 2022 w PHP przez zbiku25 Bywalec (2,940 p.)

Mam sytuacje, w której na jednej stronie chcę skorzystać z informacji zawartych z dwóch baz danych.

W bazie danych mam dwie tabele:

  • Tabela 1 – Users (z danymi użytkowników)
  • Tabela 2 – Aukcje (z aukcjami)

Chcę aby w panelu użytkownika, po zalogowaniu się na stronie widniały:

  1. Przywitanie – Witaj [tutaj imię wyciągnięte z tabeli Users]
  2. Wykaz aukcji, w których użytkownik uczestniczy – Twoje aukcje: [ tutaj powinien pojawić się wykaz z tabeli Aukcje gdzie user występuje jako organizator

Moje pytania:

pytanie 1: Czy żeby skorzystać z danych zawartych w dwóch tabelach powinienem nawiązać dwa połączenia w pliku ze skryptem logowania? tj.

$connect1 = mysqli new (host, login, pass, 'Users')

$connect2 = mysqli new (host, login, pass, 'Aukcje')

I wtedy odpowiednio ponadawać zmienne sesyjne do odpowiednich komórek?

A może nie da rady nawiązać dwóch połączeń?

pytanie2:  Czy można jakoś zrobić aby każda aukcja z wykazu aukcji w panelu użytkownika (tych, w których występuje jako organizator, o czym pisałem powyżej) była automatycznie linkiem do strony z tą aukcją (tam będzie można złożyć ofertę).

komentarz 17 listopada 2022 przez Ehlert Ekspert (212,670 p.)
Piętno błędów tego kursu PHP będzie się ciągnąć za tym forum długimi latami.

2 odpowiedzi

+2 głosów
odpowiedź 17 listopada 2022 przez VBService Ekspert (252,740 p.)
wybrane 17 listopada 2022 przez zbiku25
 
Najlepsza
  1.  Możesz użyć jednego połączenia, np.
    error_reporting(0);
    mysqli_report(MYSQLI_REPORT_OFF);
    
    $mysqli = new mysqli('localhost', 'login', 'password', 'nazwa_bazy_danych');
    if ($mysqli->connect_errno) {
        throw new RuntimeException('mysqli connection error: ' . $mysqli->connect_error);
    }
    
    $mysqli->set_charset('utf8mb4');
    
    $sql1 = "SELECT * FROM Users";
    $result1 = $mysqli->query($sql1);
    while($row = $result1->fetch_assoc()) {
        var_dump($row);
    }
    
    echo '<br><br>';
    
    $sql2 = "SELECT * FROM Aukcje";
    $result2 = $mysqli->query($sql2);
    while($row = $result2->fetch_assoc()) {
        var_dump($row);
    }
    
    $mysqli->close();

     

  2. Nazwa aukcji na wykazie, może być linkiem do danej aukcji. Odpowiednio trzeba "zbudować" tagi <a> w oparciu o dane z bazy danych, np.
    <a href="show_auction.php?id=1" title="">Komputer [adam]</a>

     

1
komentarz 17 listopada 2022 przez zbiku25 Bywalec (2,940 p.)
WOW, super dzięki!
+1 głos
odpowiedź 16 listopada 2022 przez AnimaVillis Stary wyjadacz (11,350 p.)
Poczytaj o left join MySQL :)
komentarz 16 listopada 2022 przez zbiku25 Bywalec (2,940 p.)
OK, dzięki. Z pewnością przeczytam.

Mam jeszcze jedno pytanie. Czy używając polecenia:

$connect1 = mysqli new (host, login, pass, 'Users')

mogę zrezygnować z podawania nazwy tabeli (w tym przypadku 'Users') i wtedy mysql łączy się z bazą danych a tym samym ma dostęp to wszystkich tabeli i wtedy mogę swobodnie wybierać dane róznych tabel poprzez np:

SELECT * FROM users;

SELECT * FROM aukcje;

?
komentarz 16 listopada 2022 przez AnimaVillis Stary wyjadacz (11,350 p.)
Dokładnie tak.
1
komentarz 17 listopada 2022 przez VBService Ekspert (252,740 p.)
edycja 17 listopada 2022 przez VBService

@zbiku25, Czwartym parametrem dla

                                               1         2        3
$connect1 = mysqli new (host, login, pass, 4) 

jest nazwa bazy danych, do której chcesz uzyskać połączenie a nie nazwa tabeli.

Wskazując nazwę bazy danych uzyskujesz dostęp do wszystkich tabel, które ona zawiera.

komentarz 17 listopada 2022 przez zbiku25 Bywalec (2,940 p.)
Zgadza sie - masz rację.

A w przypadku gdybym chciał połączyć się z serwerem i w jednym pliku korzystać z wielu baz danych to jest takie polecenie? Mogę wymienić bazy danych jako elementy kolejne po przecinku?

Podobne pytania

0 głosów
3 odpowiedzi 388 wizyt
0 głosów
3 odpowiedzi 92 wizyt
0 głosów
2 odpowiedzi 219 wizyt
pytanie zadane 28 kwietnia 2017 w Sieci komputerowe, internet przez Kowis Nowicjusz (120 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,937 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...