• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
667 wizyt
pytanie zadane 16 listopada 2022 w PHP przez zbiku25 Gaduła (3,000 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 (214,940 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 (256,600 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 Gaduła (3,000 p.)
WOW, super dzięki!
+1 głos
odpowiedź 16 listopada 2022 przez AnimaVillis Stary wyjadacz (13,090 p.)
Poczytaj o left join MySQL :)
komentarz 16 listopada 2022 przez zbiku25 Gaduła (3,000 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 (13,090 p.)
Dokładnie tak.
1
komentarz 17 listopada 2022 przez VBService Ekspert (256,600 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 Gaduła (3,000 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 808 wizyt
0 głosów
3 odpowiedzi 202 wizyt
0 głosów
2 odpowiedzi 348 wizyt
pytanie zadane 28 kwietnia 2017 w Sieci komputerowe, internet przez Kowis Nowicjusz (120 p.)

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,653 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...