ďťż

[PHP/MySQL] PDO, sprawdzanie czy podany rekord istnieje w bazie

       

Podstrony


telcocafe

Witam, jak w temacie. Jak sprawdzić, czy dany rekord istnieje? Moja wersja:

$pdo = Database::getInstance(); $sth = $pdo->query('SELECT * FROM `news`'); $count = $sth->fetchColumn(); if($count>0) echo 'true'; else echo 'false';
Ładne, nieładne, fajne, niefajne?
Użytkownik Isaac from Vale edytował ten post 30 czerwiec 2010, 13:51


gdybym sprawdzał, czy istnieje co najmniej jeden rekord pasujący do warunków zapytania, dodałbym na końcu 'LIMIT 1'.
jeśli jednak chciałbym policzyć ile jest rekordów pasujących do warunków - to zapytanie wyglądałoby mniej więcej tak: SELECT COUNT(*) FROM tabela WHERE liczba >= 3

Może lekko zboczę z tematu, ale jaka jest najlepsza metoda używając PDO, aby policzyć ilość pobranych rekordów?
Chodzi mi o to, aby uzyskać wynik w postaci liczby całkowitej.
Użytkownik Isaac from Vale edytował ten post 30 czerwiec 2010, 16:14

Może lekko zboczę z tematu, ale jaka jest najlepsza metoda używając PDO, aby policzyć ilość pobranych rekordów?
Chodzi mi o to, aby uzyskać wynik w postaci liczby całkowitej.


Rzutuj wartość z COUNT na inta ;) Jak dobrze pamiętam to coś w stylu (int)$zmienna



To będzie rozwiązanie bardziej delikatne dla mysql niż pierw select count a potem fetchColumn z tego? ;)

private function getGuests() { $guests = $this->pdo->query('SELECT COUNT(*) FROM `statistics` WHERE UNIX_TIMESTAMP()-`time`<60'); return (int)$guests; }

Notice: Object of class PDOStatement could not be converted to int in D:\Programy\xampp\htdocs\OO\Core\Components.php on line 102
taka linijka zresztą nie działa niestety.
Użytkownik Isaac from Vale edytował ten post 30 czerwiec 2010, 23:14
Trochę się wysil i debuguj problem. $guests to obiekt z wynikiem zapytania, a nie sam wynik. print_r($guests); i zobaczysz jak dostać się do wyniku.


PDOStatement Object ( [queryString] => SELECT COUNT(*) FROM `statistics` WHERE UNIX_TIMESTAMP()-`time`<60 )
Za wiele mi to nie mówi ;)

Bo żeś nawet nie wykonał tego zapytania. Myśl trochę a nie "nie działa = forum".

Riklaunim, wiem, że masz dobre intencje, ale to nie jest tak, że ja nie spróbowałem rozwiązać przedstawionego problemu. Rozwiązałem go i działa. Wykonuję zapytanie a funkcja fetchColumn zwraca mi wartość wierszy. Moje posty wynikały raczej z chęci dowiedzenia się, czy istnieją rozwiązania lepsze, jeśli tak to jak one wyglądają. Dajesz mi wskazówki, próbuję je wykorzystać i coś nie wychodzi, dlatego dalej zadaję pytania. "Bo żeś nie wykonał tego zapytania." A co robi funkcja query? Myślałem, że właśnie wykonuje zapytanie...

PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object
Definicja prosto z manuala...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.