Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Poprawność funkcji łączących z bazą, Prośba o schematowe "dobre rady".
ixpack
post
Post #1





Grupa: Zarejestrowani
Postów: 248
Pomógł: 55
Dołączył: 1.06.2010
Skąd: mam to wiedzieć?

Ostrzeżenie: (0%)
-----


Proszę kogoś elokwentnego o pomoc w poprawieniu niżej podanych funkcji (mój 1szy wątek i trochę się boję "was", ale musi być kiedyś ten 1szy raz (IMG:style_emoticons/default/winksmiley.jpg) ):

  1. function polaczenie()
  2. {
  3. $wynik = @new mysqli('ip.ip.ip.ip', 'login', 'haslo', 'baza');
  4. if (!$wynik) throw new Exception('Error with connection, please try later');
  5. else $wynik->autocommit(TRUE);
  6. return $wynik;
  7. }


To jedna z 2ch funkcji - ustanawiająca połączenie... Co powinienem w niej zmienić?

  1. function pobierz_nazwe_czegos($idczegos)
  2. {
  3. $idczegos = intval($idczegos);
  4. $lacz = polaczenie();
  5. $zapytanie = "select nazweczegos from tabelaczegos where idczegos = $idczegos";
  6. $wynik = @$lacz->query($zapytanie);
  7. if (!$wynik)
  8. return false;
  9. $ilosc_nazw = @$wynik->num_rows;
  10. if ($ilosc_nazw == 0)
  11. return false;
  12. $nazwa = $wynik->fetch_object();
  13. $lacz->close();
  14. return $nazwa->nazwaczegos;
  15. }
  16.  
  17. $nazwa = pobierz_nazwe_czegos($idczegos);





Tu pobieram tylko jedną nazwę elementu, gdzie znam konkretny id elementu - Jestem "samoukiem", gdzieś czytałem, gdzieś podpatrzyłem, sam napisałem... Dlatego "pytam", bo chyba sam lepiej nie wymyślę.

Ps. Czy muszę zamykać połączenie "$lacz->close();" jeżeli w funkcji 1 mam "autocommit(TRUE);"?

Dzięki za odpowiedź (IMG:style_emoticons/default/smile.gif)


ixpack
-------------
Łatwo jest być odważnym za murami własnego zamku...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ixpack
post
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 55
Dołączył: 1.06.2010
Skąd: mam to wiedzieć?

Ostrzeżenie: (0%)
-----


Nie wiem, czy dobrze przejrzałem manual, ale czy to wygląda lepiej?:

  1. function lacz_bd()
  2. {
  3. $wynik = new mysqli('ip.ip.ip.ip', 'login', 'pass', 'baza');
  4. if (!$wynik)
  5. throw new Exception(' no 1');
  6. else
  7. {
  8. $wynik->autocommit(TRUE);
  9. return $wynik;
  10. }
  11. }
  12.  
  13. function pobierz_nazwe_czegos($idczegos)
  14. {
  15. $idczegos = intval($idczegos);
  16. $lacz = polaczenie();
  17. $zapytanie = "select nazweczegos from tabelaczegos where idczegos = $idczegos";
  18. $wynik = $lacz->query($zapytanie);
  19. if (!$wynik)
  20. throw new Exception(' no 2');
  21. else
  22. {
  23. $ilosc_nazw = $wynik->num_rows;
  24. if ($ilosc_nazw == 0) return false;
  25. $nazwa = $wynik->fetch_object();
  26. $lacz->close();
  27. return $nazwa->nazwaczegos;
  28. }
  29. }
  30.  
  31. try
  32. {
  33. $nazwa = pobierz_nazwe_czegos($idczegos);
  34. }
  35. catch (Exception $e)
  36. {
  37. echo 'Error: ', $e->getMessage(), "\n";
  38. }


I tu nasuwa się kolejne pytanie (IMG:style_emoticons/default/smile.gif) : Jak odbije się wstawienie całego skryptu w blok "try" na działanie i szybkość strony? Czy powinienem członkować kod i odpowiednie "kawałki" wstawiać w kolejne bloki "try" i czy powinienem nadawać inne zmienne ($e, $f itd.)?

Ten post edytował ixpack 1.06.2010, 13:05:29
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 06:15