Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP_PDO] Jak mogę sprawdzić za pomocą PDO. czy rekord już istnieje?
Forum PHP.pl > Forum > Przedszkole
Gość
* Napewno połączenie z PDO mam poprawne.
Ale nie działa mi sprawdzenie czy rekord istnieje,
próbowałem według zagranicznych for na przykład z:
  1. SELECT COUNT(`rekord`) FROM `tabela` WHERE `rekord`= 'nazwa';

w PDO próbowałem z funkcjami (oddzielnie)
  1. if ($stmt->rowCount() == 0){die('Rekord nie istnieje');}
  2. if ($stmt->fetchColumn() == 0{die('Rekord nie istnieje');}


ale nie działa, proszę o pomoc, są inne wyjścia z tej sytuacji?
Crozin
  1. $stmt = $pdo->prepare('SELECT COUNT(*) FROM tbl_name WHERE ...');
  2. $stmt->execute();
  3.  
  4. if ($stmt->fetchColumn() > 0) {
  5. // istnieje
  6. }
Gość
Cytat(Crozin @ 18.03.2014, 15:52:29 ) *
  1. $stmt = $pdo->prepare('SELECT COUNT(*) FROM tbl_name WHERE ...');
  2. $stmt->execute();
  3.  
  4. if ($stmt->fetchColumn() > 0) {
  5. // istnieje
  6. }


właśnie to samo robię tylko że z różnicą na "Nie istnieje"

  1. $stmt = $pdo->prepare("SELECT COUNT(*) FROM `users` WHERE `numer`=$numer;");
  2. $stmt->execute();
  3. if ($stmt->fetchColumn() < 0)
  4. {
  5. //if'y jak nie istnieje, m.in błąd o rejestracji
  6. if ($_GET['msg'] != 'zarejestruj')
  7. {
  8. die('Napisz "zarejestruj" aby się zarejestrować');
  9. }
  10. }
  11. //if'y jak istnieje.



Kod który przedstawiłem jest prawie identyczny do mojego tylko bardziej rozwinięty, został skrócony dla celów prezentacji.

Użytkownik nie istnieje a przechodzi tam gdzie "//if'y jak istnieje."
Turson
Jak masz już SELECT CONT() to żadne liczenie wierszy/kolumn ze strony pdo nie jest potrzebne.
  1. $stmt = $pdo->prepare("SELECT COUNT(*) FROM `users` WHERE `numer`=$numer;");
  2. $stmt->execute();
  3. print_r($stmt);

wyprintuj tablicę to dostaniesz wynik
strzelam z pamięci, że będzie to $stmt[0]

Innym sposobem możesz:
  1. $stmt = $pdo->query("SELECT * FROM `users` WHERE `numer`=$numer;");
  2. $stmt->fetchAll();
  3. $wynik = $stmt->rowCount();
Gość
wynik z print_r():

PDOStatement Object
(
[queryString] => SELECT COUNT(*) FROM `users` WHERE `numer`=100;
)

tam gdzie 100 wyswietliło mój numer.

a ta druga opcja też przeskakuje do if'a.
Wrazie czego sprawdziłem w bazie czy czasem już nie istnieje w jej mój numer, ale pusta baza 0 rekordów.
Turson
  1. $stmt = $pdo->prepare("SELECT COUNT(*) FROM `users` WHERE `numer`=$numer;");
  2. $stmt->execute();
  3. $dane = $stmt->fetchAll();
  4. print_r($dane );
mmmmmmm
Count ZAWSZE zwraca liczbę. Czasami jest to 0.
Więc zawsze ilość rekordów >0.
Crozin
Funkcja COUNT zwróci zawsze wynik nieujemny ([0; ∞]), Ty zaś sprawdzasz w swoim IF-ie czy zwrócona wartość jest mniejsza od zera...
  1. if ($stmt->fetchColumn() === 0) {
  2. // nie istnieje
  3. }
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.