Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] zapytanie UPDATE nie działa
bigda
post 6.06.2018, 23:57:02
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 17.04.2018

Ostrzeżenie: (0%)
-----


Chcę uaktualnić rekord. Wpisałem kod:

CODE
if ($wszystko_OK==true)
{
$polaczenie -> query("UPDATE klienci SET imie='$imie', nazwisko='$nazwisko', malzonek_imie='$imiemalzonek', malzonek_nazwisko='$nazwiskomalzonek', telefon='$telefon', miasto='$miasto', ulica='$ulica', nr_domu='$nrdomu', nr_mieszkania='$nrmieszkania', pesel='$pesel', farmakoterapia='$farmakoterapia', poprzednie_terapie='$psychoterapia', opis='$opis', kontrakt='$kontrakt', cena_atualna='$cena' WHERE id_klienta='$id'");


$_SESSION['zapisano']="Zmodyfikowano wpis w bazie danych";
}


Warunek jest spełniony - wyświetla się $_SESSiON['zapisano'] potraktowany printem;
Połączenie jest nawiązane.
Wszystkie zmienne użyte w zapytaniu są ustawione - wyświetlają się printem.
UPDATE wpisane w phpMyAdminie działa.

Po kliknięciu na guzik submit w formularzu strona się odświeża, w bazie nic się nie zmienia.

Gdzie tkwi błąd?
Go to the top of the page
+Quote Post
mrk9109
post 7.06.2018, 07:09:15
Post #2





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


fragment od mnie przerób pod siebie spróbuj tak :

  1. $zapytanie = $polaczenie->query("UPDATE `aktualnosci` SET
  2. `tytul`='".$tytul."',
  3. `tresc`='".$tresc."'
  4. WHERE id = '". $id."';");


Ten post edytował mrk9109 7.06.2018, 07:10:10
Go to the top of the page
+Quote Post
nospor
post 7.06.2018, 09:17:28
Post #3





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




@mrk9109 twoje poprawki maja sie nijak do problemu.

@bigda by miec 100% pewnosci ze odpala ci sie ten IF to daj
  1. if ($wszystko_OK==true)
  2. {
  3. $polaczenie -> query("UPDATE klienci SET imie='$imie', nazwisko='$nazwisko', malzonek_imie='$imiemalzonek', malzonek_nazwisko='$nazwiskomalzonek', telefon='$telefon', miasto='$miasto', ulica='$ulica', nr_domu='$nrdomu', nr_mieszkania='$nrmieszkania', pesel='$pesel', farmakoterapia='$farmakoterapia', poprzednie_terapie='$psychoterapia', opis='$opis', kontrakt='$kontrakt', cena_atualna='$cena' WHERE id_klienta='$id'");
  4.  
  5. echo "UPDATE klienci SET imie='$imie', nazwisko='$nazwisko', malzonek_imie='$imiemalzonek', malzonek_nazwisko='$nazwiskomalzonek', telefon='$telefon', miasto='$miasto', ulica='$ulica', nr_domu='$nrdomu', nr_mieszkania='$nrmieszkania', pesel='$pesel', farmakoterapia='$farmakoterapia', poprzednie_terapie='$psychoterapia', opis='$opis', kontrakt='$kontrakt', cena_atualna='$cena' WHERE id_klienta='$id'";
  6. die('Widzisz mnie?');
  7.  
  8. $_SESSION['zapisano']="Zmodyfikowano wpis w bazie danych";
  9. }


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 7.06.2018, 09:23:45
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W zależności od sterownika (w sumie nie wiadomo czy PDO, czy mysqli) obejmij zapytanie blokiem try/catch i ustaw wyświetlanie błędów. Dodatkowo korzystaj z bindowania parametrów.


--------------------
Go to the top of the page
+Quote Post
bigda
post 7.06.2018, 16:34:58
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 17.04.2018

Ostrzeżenie: (0%)
-----


mrk9109 Spróbowałem, niestety żadnych zmian.
nospor Wyświetla się wszystko - zapytanie, treść wypełnionych pól formularza - czyli niepuste zmienne, a na koniec napis "widzisz mnie?". If chyba jednak działa.


viking Jestem totalnie zielony, bo dopiero co zacząłem się uczyć, a i to tylko hobbystycznie robię, choć staram się zrobić coś użytkowego dla siebie. Było nie było nie wiem, czy dobrze zastosowałem się do Twojej rady.
Błędy wyświetliłem kodem

  1. <?PHP
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4. ?>


Zapytanie:

Kod
if ($wszystko_OK==true)
{
    try {
    
$polaczenie -> query("UPDATE klienci SET imie='$imie', nazwisko='$nazwisko', malzonek_imie='$imiemalzonek', malzonek_nazwisko='$nazwiskomalzonek', telefon='$telefon', miasto='$miasto', ulica='$ulica', nr_domu='$nrdomu', nr_mieszkania='$nrmieszkania', pesel='$pesel', farmakoterapia='$farmakoterapia', poprzednie_terapie='$psychoterapia', opis='$opis', kontrakt='$kontrakt', cena_atualna='$cena' WHERE id_klienta='$id'");
         }
catch(Exception $e)
{
echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
echo '<br />Informacja developerska: '.$e;    
    
}

$_SESSION['zapisano']="Zmodyfikowano wpis w bazie danych";
}



Bez zmian - nic się nie zmienia, nie wyświetlają się błędy wyświetla. O PDO i o bindowaniu coś słyszałem, ale jeszcze nie umiem. Będę grzebać w necie i uczyć się. Połączenie jest w mysqli.

Zastanawiam się, czy problemem może być to, że nie wszystkie pola formularza są obowiązkowe, a puste pole, to pusta zmienna w zapytaniu. Wcześniej w innym skrypcie już miałem taki problem, ale rozwiązałem go naokoło - tutaj takiej metody nie dam rady zastosować. Cały skrypt jest identyczny jak w innym miejscu tej samej stronki, tylko zmienne są inne. Tam też występują w zapytaniu puste zmienne i wszystko działa jak należy.
Go to the top of the page
+Quote Post
nospor
post 7.06.2018, 16:49:30
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Skoro uzywasz mysqli to blad zapytania masz tutaj
http://php.net/manual/en/mysqli.error.php
Wyswietl go sobie po wykonanym zapytaniu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 7.06.2018, 18:00:06
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W mysqli potrzebujesz dodatkowo
  1. mysqli_report(MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ALL);
O bindowaniu obowiązkowo poczytaj bo pewnie te zmienne pochodzą od usera -> sql injection.


--------------------
Go to the top of the page
+Quote Post
bigda
post 7.06.2018, 19:19:37
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 17.04.2018

Ostrzeżenie: (0%)
-----


Jesteście wielcy!!!!

Pomogły porady nt. wyświetlania błędów - jak się wyświetlił, sprawa okazała się banalna. W zapytaniu użyłem nazwy kolumny cena_atualna zamiast cena_aktualna. Sto razy sprawdzałem literówki i nie zauważyłem.

O bindowaniu na pewno poczytam, ale na razie zagrożenia nie ma, bo ja będę jedynym użytkownikiem tego, co akurat teraz robię. To taka baza danych dla mojej działalności, a w php piszę sobie panel do obsługi bazy. Ale mam już następny pomysł, więc cały czas będę się doszkalał.

Jeszcze raz bardzo dziękujęexclamation.gif!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 19:49