Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obługa połączeń z bazą
Forum PHP.pl > Forum > PHP
Avatarus
Witam
Mam pytanie odnośnie waszych metod obsługi połączeń z bazą (domyślnie mysql). Jak sobie z nimi radzicie. Zastanawiacie się o co dokładnie pytam? Zrozumiecie jak przeczytacie przykład poniżej.

  1. <?php
  2. function pokaz()
  3. {
  4. polaczenie();
  5. $sql=mysql_query('SELECT * from ogloszenia');
  6. while ($wiersz=mysql_fetch_assoc($sql);
  7. {
  8. KOD
  9. }
  10. }
  11. ?>


wiedząc, że ta i kilka innych funkcji w tym skrypcie korzysta w różnoraki sposób z bazy (dodawanie, kasowanie, sprawdzanie itp). Jak poradzilibyście sobie z tym połączeniem. Czy po pętli while trzeba jakoś wywalać dane resource, albo ręcznie zamykać połączenia? A może coś jeszcze?
Chodzi mi o poprawne pisanie takich właśnie funkcji, nastawiam się na szybki i zoptymalizowany kod.
Nie wiem czy jasno napisałem o co mi chodzi, bo czasem myślę dość chaotycznie smile.gif
Czy np po whilu dawać mysql_close(); ? ma to sens skoro te połączenia i tak się zamkną po zakończeniu tego skryptu...

Z góry dziękuje i pozdrawiam
MMPrime
Najlepszym wyjściem jest korzystanie z własnej klasy do obsługi połączeń z bazą danych. Wtedy połączenie jest nawiązywane w odpowiednim momencie, tuż przed wykonaniem pierwszego zapytania. Połączenie z bazą danych zamykam po wykonaniu wszystkich akcji, ale przed wykonaniem widoku.
piotrooo89
Ja osobiście korzystam z inkluzji pliczku odpowiedzialnego za łączenie z bazą. Dla mnie jest to wygodne wystarczy zmienić w jednym pliczku i jest wszędzie. Jako że nie potrzebuje żadnych wodotrysków to rozwiązanie mnie wystarcza.
Avatarus
no ja niestety jestem zatwardziałym strukturowcem, nie lubię pracować na klasach, chodź czasem muszę (proszę mnie tylko nie namawiać, bo problem taki że wiele skryptów jest już napisanych i nie mam czasu ich przerabiać).

Rozumiem, czyli jednak zamykać wszystko po użyciu bazy.
Czyli tylko to? zamykać zawsze i nic więcej?
l0ud
Jeżeli nie programujesz obiektowo to nie masz zbyt wielu możliwości. Najprościej chyba tak:
- na samym początku skryptu dołączyć plik posiadający dane do bazy, spróbować się z nią połączyć i obsłużyć błąd jeżeli się to nie uda
- wykonywać zapytanie do bazy bezpośrednio przez mysql_query($zapytanie), albo pofatygować się z doprowadzeniem uchwytu do bazy w każdej funkcji ją wykorzystującej (i dołączać do mysql_query)
- jak już Ci zależy na małym z użyciu pamięci, używaj mysql_free_result() po pobraniu danych z zapytania:
http://pl.php.net/manual/pl/function.mysql-free-result.php
- nie zamykać połączenia z bazą danych (bo po co?). Możesz nawet zamiast mysql_connect na początku użyć mysql_pconnect który utworzy szybsze, stałe połączenie z bazą danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.