• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapytanie UPDATE i sprawdzenie ile wpisów zostało zaktualizowaych

VPS Starter Arubacloud
0 głosów
535 wizyt
pytanie zadane 5 listopada 2017 w SQL, bazy danych przez kevin Mądrala (5,010 p.)

Witam!

   Mam taką kwerendę aktualizującą dany rekord:

UPDATE osoba SET imie=:nowe_imie WHERE nazwisko=:nazwisko

W tabeli osoba w polu imie zostanie wpisane nowe_imie w rekordzie którym zostanie spełniony warunek WHERE , tylko co jeżeli nie ma rekordu który spełni warunek WHERE ? Jak to wykryć po tym zapytaniu? tzn. ta kwerenda wykona się ale nie ma osoby która posiada dane nazwisko ? Jak taką sytuację wychwycić za pomocą PDO ? execute(); zwróci gdzieś wynik ? Do tej pory przed kwerendą update wykonywałem kwerendę SELECT COUNT(*) FROM osoba WHERE nazwisko=:nazwisko i jeżeli nie znaleziono takiej osoby która spełni warunek informowałem o tym użytkownika a jeżeli osoba została znaleziona  wykonywałem kwerendę aktualizującą imię.

1 odpowiedź

0 głosów
odpowiedź 5 listopada 2017 przez mi-20 Stary wyjadacz (13,190 p.)

jeśli warunek nie zostanie spełniony to polecenie się nie wykona. Poza tym możesz sprawdzić issetem czy warunek istnieje i wykonać polecenie tylko kiedy istnieje, jeśli nie poinformować o tym użytkownika. Możesz to zrobić tak:

if(isset($nazwisko)){
Wykonujesz polecenie
}else{
echo "Nie istnieje takie nazwisko";
}

lub tak:

if(!isset($nazwisko)){
 echo "Nazwisko nie istnieje";
}

oczywiście najpierw musisz pobrać wartość do zmiennej $nazwisko

 

komentarz 6 listopada 2017 przez kevin Mądrala (5,010 p.)

Tylko jak isset'em sprawdzę czy istnieje rekord w bazie który posiada konkretne nazwisko ? Nie sprawdzę tego dopóki nie pobiorę rekordu z bazy... Więc jeżeli nie ma sposobu na sprawdzenie ile rekordów zostało zaktualizowanych po wykonaniu UPDATE to zostaje mi przed wykonaniu UPDATE sprawdzić czy  istnieje dany wpis wykonując zapytanie 'SELECT COUNT(*) FROM osoba WHERE nazwisko:nazwisko LIMIT 1' a sprawa kolejna to jaka jest różnica pomiędzy tym zapytaniem a tym select exists(select count(*) from osoba where nazwisko=:nazwisko) exists zwraca true bądź false ale jakie daje to korzyści w używaniu ? Czy w tym przypadku ma to sens ? Do tej pory do sprawdzenia czy istnieje dany rekord używałem:

$sql = 'SELECT COUNT(*) FROM osoba WHERE nazwisko = :nazwisko LIMIT 1';
$stmt = $conn->prepare($sql);
$stmt->bindParam(":nazwisko", $_GET['id'], PDO::PARAM_STR);
$stmt->execute();

if($stmt->fetchColumn()) {
           // Znaleziono rekord !
}

 

Podobne pytania

0 głosów
1 odpowiedź 155 wizyt
pytanie zadane 31 stycznia 2020 w SQL, bazy danych przez bwl Obywatel (1,530 p.)
0 głosów
2 odpowiedzi 286 wizyt
pytanie zadane 29 listopada 2015 w PHP przez Widemo Użytkownik (920 p.)
0 głosów
2 odpowiedzi 690 wizyt
pytanie zadane 24 maja 2018 w SQL, bazy danych przez bwl Obywatel (1,530 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...