Skocz do zawartości

Kiedy wywoływać klasę odpowiedzialną za łączenie się z bazą danych


 Udostępnij

Rekomendowane odpowiedzi

  • Ekspert

Cześć, stworzyłem sobie klasę, którą wykorzystuje do łączenia się z bazą danych i teraz mam mały problem gdyż nie wiem, w którym momencie i kiedy powinienem ją wywoływać. Przy każdej akcji, która się wykona powinienem dołączać za pomocą require_once() plik z danymi czy może jest na to jakiś inny sposób? Bo na logikę takie rozwiązanie średnio mi pasuje gdyż za każdym razem będzie tworzony nowy obiekt, a to raczej nie jest najlepsze rozwiązanie, prawda? Chociaż z drugiej strony back-endu w ogóle nie tykam więc nie za bardzo się znam.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

W konstruktorze do zmiennej $connection przypisuje nowy obiekt PDO:

$this->connection = new PDO( $dsn, $this->name, $this->password );

Mam też metodę getConnection(), która zwraca zmienną $connection:

public function getConnection() {
	return $this->connection;
}

Stworzyłem więc tak jak radziłeś zmienną globalną i robię coś takiego:

global $data = database::getConnection();

No ale otrzymuje wtedy błąd 500

Do budowy klasy odpowiedzialnej za połączenie się z bazą danych wzorowałem się na tym: PHP OOP Database class using MySQLI and Singleton pattern. Only one instance of ...

W moim przypadku jedynie pola i konstruktor troche się różnią.

Edytowane przez Lord Fenrir
Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

Nazwa klasy i odwołanie do niej zawsze z wielkiej

Wg tego co podlinkowałeś, to powinieneś zrobić identycznie jak autor:

<?php
global $pdo;
$db = Database::getInstance();

$pdo = $db->getConnection(); 

Możesz też ominąć metodę getInstance() w taki sposób:

<?php
global $pdo;
$db = new Database();

$pdo = $db->getConnection(); 

Tylko przy konstruktorze musisz zmienić słowo private na public

Edytowane przez BlackIce
Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

@BlackIce a powiedz mi jeszcze, jeżeli po dołączeniu pliku głównego chce utworzyć nowe zapytanie SQL to konstrukcja powinna wyglądać tak:

$db->query();

Czy może tak:

$pdo->query();

No i jeszcze jedno odnośnie samego zapytania, czy jest różnica między użyciem pojedynczego apostrofa od podwójnego (' ' lub " ") ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Ekspert

$pdo - bo tam masz połączenie, w $db masz tylko podniesiony obiekt, więc ->query() nie zadziała.

Co do samego zapytania - zawsze cudzysłów, bo apostrof używany jest do stringów. Chociaż sam możesz wybrać, który zapis wybrać.

Wolisz pisać tak (zapis zalecany):

<?php
$sql = "SELECT * FROM `table_name` WHERE `table_column_name` = 'test12'";

Czy tak:

<?php
$sql = 'SELECT * FROM `table_name` WHERE `table_column_name` = \'test12\'';

?

Edytowane przez BlackIce
Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

×