Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak policzyć rekordy w PDO
Forum PHP.pl > Forum > Przedszkole
vegeta
Witam.

Korzystam z PDO i nie wiem jak policzyć rekordy w tabeli np. ID.
zordon
najlepiej policzyć już w zapytaniu mysql:
http://dev.mysql.com/doc/refman/5.0/en/gro...#function_count
a jak się uprzesz to pobierasz wszystkie wiersze do tablicy i liczysz jej elementy:
http://pl.php.net/manual/en/function.count.php
Daiquiri
Skorzystać z example 2?
vegeta
Co mi z policzenia w zapytaniu jak ja chcę policzyć wszystkie ID (bo np. niektore id usuwalem) i wyswietlic ich ilosc.

Mam kod:

Kod
<?php
$stmt = $pdo -> query('SELECT `login` FROM `user` ORDER BY `id` desc limit 0,01');
foreach($stmt as $row)
{
echo 'Witamy najnowszego użytkownika, którym jest <b>'.$row['login'].'</b>! Jest on naszym X userem.<br />';
}
echo 'Mamy X piosenek oraz X wykonawców.';
?>


Byłbym wdzięczny za wyszukanie błędów bezpieczeństwa w skrypcie.
zordon
albo ja mam kłopoty z czytaniem ze zrozumieniem, albo Ty. Musieliśmy Cię źle zrozumieć, bo zarówno moje podpowiedzi, jak i kolegi realizują to zadanie. Co do tego ma czy usuwałeś jakieś ID? Jak usunąłeś z bazy to ich tam nie ma - nie zostaną policzone...

jak chcesz kombinować jak koń pod górę to przekształć sobie swój fragment kodu na coś w stylu:
  1. $stmt = $pdo -> query('SELECT `login` FROM `user` ORDER BY `id` desc limit 0,01');
  2. $licznik = 0;
  3. foreach($stmt as $row)
  4. {
  5. echo 'Witamy najnowszego użytkownika, którym jest <b>'.$row['login'].'</b>! Jest on naszym '.++$licznik.'userem.<br />';
  6. }
  7. echo 'Mamy X piosenek oraz X wykonawców.';
vegeta
Spoko już zrozumiałem.

  1. $stmt = $pdo -> query('SELECT COUNT(id) FROM user');
  2. $stmt2 = $pdo -> query('SELECT login FROM `user` ORDER BY `id` desc limit 0,01');
  3. foreach($stmt2 as $row2)
  4. foreach($stmt as $row)
  5. {
  6. echo 'Witamy najnowszego użytkownika, którym jest <b>'.$row2['login'].'</b>! Jest on naszym '.$row['COUNT(id)'].' userem.<br />';
  7. }
  8. $stmt -> closeCursor();
  9. $stmt2 -> closeCursor();
  10.  
  11. $stmt3 = $pdo -> query('SELECT COUNT(id), COUNT(wykonawca) FROM `ch`');
  12. foreach($stmt3 as $row3)
  13. echo 'Mamy '.$row3['COUNT(id)'].' piosenek oraz '.$row3['COUNT(wykonawca)'].' wykonawców.<br />';
  14. $stmt3 -> closeCursor();


Teraz proszę o wskazanie ewentualnych błędów bezpieczeństwa i czy można to jakoś uprościć. Jak zrobić, żeby przy liczeniu wykonawcy liczyło tylko różne od siebie wartości, a nie wszystko z kolumny wykonawca? Np. mam 2x Dżem i chcę, aby liczyło mi to tylko raz.
!*!
Pogrupowałbym to poprzez
Kod
GROUP BY group_id
Jednak co robisz imo źle, to ilość zapytań. Im mniej ich zrobisz, tym będzie to bardziej wydajne.
vegeta
Co byś pogrupował?

Co do zapytań to mógłbym wsadzić SMTP i SMTP2 w jedno, ale mam tam wybieranie ostatniego elementu ID. Chyba, że macie inne pomysły jak to połączyć.
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.