Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Proszę o sprawdzenie class'y
Forum PHP.pl > Forum > Przedszkole
Rysh
Dawno nie pisałem nic w PHP ze względu na pracę, jednak w ostatnich dniach urlopu znalazłem chwilę aby sobie przypomnieć co nieco.
Dziś wyskrobałem klasę do obsługi komentarzy, jednak zanim zacznę ją rozbudowywać, chciałbym dostać kilka wskazówek, aby z początku nie uczyć się błędów.
Wszelkie uwagi mile widziane.

  1. <?php
  2.  
  3. try {
  4. $db = new PDO('mysql:dbname=openttd-test;host=s.s.s', 'rysh', 's.s.s');
  5. } catch(PDOException $exception) {
  6. echo $exception->getMessage();
  7. }
  8.  
  9. class Comment {
  10. private $db;
  11. public $comments;
  12. function __construct($db) {
  13. $this->db = $db;
  14. }
  15.  
  16. function AddComment($art_id, $usr_id, $text, $date, $ip) {
  17. $sql = $this->db->prepare("INSERT INTO comments (art_id, usr_id, text, date, ip) VALUES (:art_id, :usr_id, :text, :date, :ip)");
  18. $data = array($art_id, $usr_id, $text, $date, $ip);
  19. $sql->execute($data);
  20. return $sql->rowCount();
  21. }
  22.  
  23. function DelCommnet($comment_id) {
  24. $sql = $this->db->prepare("DELETE FROM comments WHERE comment_id=:comment_id");
  25. $sql->bindValue(":comment_id", $comment_id, PDO::PARAM_INT);
  26. $sql->execute();
  27. return $sql->rowCount();
  28. }
  29.  
  30. function ShowComments($art_id, $limit = 50) {
  31. $sql = $this->db->prepare("SELECT usr_id, text, date, ip FROM comments WHERE art_id=:art_id LIMIT :limit ORDER BY data DESC");
  32. $data=array($art_id, $limit);
  33. $sql->execute($data);
  34. $this->comments = $sql->fetchAll(PDO::FETCH_ASSOC);
  35. }
  36.  
  37. function ShowUserComments($usr_id, $limit = 50) {
  38. //cdn.
  39. }
  40. }


Poza tym interesuje mnie w jaki sposób przekazujecie dane do PDO:
- jako tablica i $pdo->execute($dane)
- każdy parametr z osobna $pdo->bindValue('cos', $cos, PDO::PARAM_STR)

Pozdrawiam.
ber32
Do zapytan dołożyłbym obsługę błędów
np. tak
  1. try {
  2. $sql = $this->db->prepare("DELETE FROM comments WHERE comment_id=:comment_id");
  3. $sql->bindValue(":comment_id", $comment_id, PDO::PARAM_INT);
  4. $sql->execute();
  5. return $sql->rowCount();
  6. } catch(PDOExecption $e) {
  7. print "Error!: " . $e->getMessage() . "</br>";
  8. }
teez
W funkcji addComment czemu return $sql->rowCount()? Nie lepiej return TRUE ( jeżeli powiedzie ) FALSE ( jeżeli nie powiedzie się )? To samo w delComment. W showComment dałbym return tablicy z wynikami.


Rysh
Cytat(teez @ 28.09.2013, 17:53:06 ) *
W funkcji addComment czemu return $sql->rowCount()? Nie lepiej return TRUE ( jeżeli powiedzie ) FALSE ( jeżeli nie powiedzie się )? To samo w delComment. W showComment dałbym return tablicy z wynikami.

AddComment - return $sql->rowCount(), dlatego że jeśli doda rekord to zwróci 1 czyli prawda, jeśli wystąpi błąd lub cokolwiek innego będzie 0 czyli false.
DelComment - tak samo jak wyżej, jeżeli usunie (powinno) dostanę ile rekordów usunięto w tym wypadku wchodzi w grę 1 lub 0. Czyli albo funkcja wykonała swoje zadanie, albo nie.
ShowComment - tutaj nie widziałem czy zwracać tablicę, czy przekazać do zmiennej w klasie.
em1X
Pełno klasycznych błędów początkujących php'owców.
Zapoznaj się z tematem Temat: Ocena klasy obslugujacej baze 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.