• 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

Object Storage Arubacloud
0 głosów
552 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ź 162 wizyt
pytanie zadane 31 stycznia 2020 w SQL, bazy danych przez bwl Obywatel (1,530 p.)
0 głosów
2 odpowiedzi 288 wizyt
pytanie zadane 29 listopada 2015 w PHP przez Widemo Użytkownik (920 p.)
0 głosów
2 odpowiedzi 743 wizyt
pytanie zadane 24 maja 2018 w SQL, bazy danych przez bwl Obywatel (1,530 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...