Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL][PHP] Wysyłanie zapytania do mysql
Koldy
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 28.06.2009
Skąd: Great Britan

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


Siemanko mam takie pytanie: Czy to jest poprawne? w sensie takim czy tak się używa.
  1. $ile = mysql_num_rows(mysql_query("SELECT cid FROM comments WHERE post='$jid'"));


Jak najlepiej robić zapytania i je wysyłać, bo jak tak sobie robie:
  1. $q = "SELECT * FROM comments, users WHERE comments.user = users.uid AND post='$jid' ORDER BY cid DESC";
  2. $qid = mysql_query($q);
  3. $ile = mysql_num_rows($qid);

to się trochę syf robi, jak dbacie o to by wasz kod był przejżysty przy powtarzających się rzeczach?
podzielcie się (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Ad. 2

Dla bardziej skomplikowanych (tak naprawdę po prostu dłuższych) zapytań osobiście polecam wyrzucenie zapytania poza ciało funkcji tak jak zaproponował autor:

  1. $query = "SELECT a.costam1, a.costam2, a.costam3 FROM tabelka1 AS a " .
  2. "LEFT JOIN tabelka2 AS b ON a.id1 = b.id2 " .
  3. "WHERE a.jakies_pole LIKE 'to jest jakis tekst%' " .
  4. "ORDER BY a.jakies_pole ASC LIMIT 0,100";
  5.  
  6. $query = mysql_query($query);
  7.  
  8. // dalsze instrukcje


Dla dłuższych zapytań niezależnie od tego czy uzywa się funkcji z rodziny mysql_* czy PDO czy czegokolwiek innego (może poza ORM) to dobry zwyczaj bo kod staje się o wiele czytelniejszy a poprawne podzielenie zapytania na linie może jedynie pomóc w jego zrozumieniu przez osoby trzecie, które kiedyś mogą na dany kod zerknąć...

I teraz odnosząc się do tego co napisał mój przedmówca - weź sobie do serca tą radę z PDO Autorze - to raz a dwa:

mysql_num_rows() jak i jego odpowiednik w PDO czyli pdostatement::rowCount() służą owszem do pobrania liczby rekordów i można z nich korzystać ale tylko gdy pobierasz rekordy w celu ich wyświetlenia (wszystkich) a dodatkowo potrzebujesz znać ich liczbę... Tak jak napisał przedmówca jeśli potrzebujesz z bazy jedynie liczby rekordów spełniającej dane kryteria bardzo mile widziane jest COUNT()

(IMG:style_emoticons/default/wink.gif)

Ten post edytował Sephirus 31.01.2012, 08:52:24
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: 3.10.2025 - 08:07