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

question-closed Aktualizacja danych w bazie za pomocą PHP nie działa.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,199 wizyt
pytanie zadane 7 stycznia 2017 w PHP przez Corleone97 Początkujący (450 p.)
zamknięte 8 stycznia 2017 przez Corleone97

Witajcie, hakjerzy :D To mój pierwszy post tutaj, także pozdrawiam wszystkich, którzy chcą mi pomóc ;) Otóż chcę zrobić prosty mechanizm przelewania wirtualnych pieniędzy pomiędzy kontami. Mam bazę, tam między innymi numer konta i stan konta. Niestety skrypt, który pobiera dane z formularza przelewu i powinien zauktualizować dane w bazie wedle uznania nie działa :/ Ktoś zna przyczynę? Po wciśnięciu submita wyświetla oczywiście że przelew wykonano ale w bazie brak zmian. Oto mój kod tego skryptu:

<?php
session_start();

$odbiorca = $_POST['odbiorca'];
$kwota = $_POST['kwota'];
$nr_konta = $_SESSION['nr_konta'];

$kwota = floatval($kwota);

$polaczenie = @new mysqli($db_host,$db_user,$db_pass,$db_name);


if($polaczenie->connect_errno!=0)
	{
		echo "ERROR ".$polaczenie->connect_errno;
	}
else
{
$polaczenie->query("UPDATE bank.klienci SET stan_konta=stan_konta+$kwota WHERE idklienta = $odbiorca");
$polaczenie->query("UPDATE bank.klienci SET stan_konta=stan_konta-$kwota WHERE idklienta = $nr_konta");


$polaczenie->close();
header("Location: przelew.php");
$_SESSION['przelew_wykonany'] = true;
}
?>

 

komentarz zamknięcia: Rozwiązałem problem
komentarz 8 stycznia 2017 przez grollajt Bywalec (2,860 p.)

Usun @ z:

$polaczenie = @new mysqli($db_host,$db_user,$db_pass,$db_name);

 

Zapyanie jakies dziwne nie jestem pewien czy istnieje mozliwosc dodawania tak jak to robisz ale jak juz zmienna do zapytania dodaje sie na tekiej zasadzie :
 

$polaczenie->query("UPDATE bank.klienci SET stan_konta=stan_konta+."$kwota". WHERE idklienta = ."$odbiorca);

To chyba powinno pomoc
 

komentarz 8 stycznia 2017 przez Corleone97 Początkujący (450 p.)
Niestety, nic to nie pomogło :/
komentarz 8 stycznia 2017 przez Chess Szeryf (76,710 p.)

Zamiast bank.klienci powinno być chyba bank,klienci. Przecinek zamiast kropki.

2
komentarz 8 stycznia 2017 przez Arkadiusz Waluk Ekspert (289,230 p.)
$polaczenie->query("UPDATE bank.klienci SET stan_konta=stan_konta+."$kwota". WHERE idklienta = ."$odbiorca);

Przecież to głupota, wyrzuci błędy składni PHP bo kropki nie wykonują konkatenacji jak powinny a są tekstem w zapytaniu.

Zamiast bank.klienci powinno być chyba bank,klienci. Przecinek zamiast kropki.

I to też głupota, tak można zapisać i oznacza to tabele w określonej bazie. Nie jest co prawda koniecznie, ale nie powinno powodować błędu.

 

Napisałeś, że jakiś komunikat wyświetla się normalnie, czyli jak rozumiem cały kod wykonuje się normalnie tylko zapytanie do bazy nie działa.

Użyj więc http://php.net/manual/en/mysqli.error.php (może być np. po wykonaniu każdego query) aby wyświetlić ewentualne błędy zwrócone przez bazę (tylko nie zapomnij na czas testów usunąć przekierowania bo nic nie zobaczysz).

komentarz 8 stycznia 2017 przez grollajt Bywalec (2,860 p.)
edycja 8 stycznia 2017 przez grollajt

No faktycznie z konkatenacja to poszalalem :D 
dla potomnych o cos takiego mi chodzilo:
 


$polaczenie->query('UPDATE bank.klienci SET stan_konta=stan_konta + '.$kwota.' WHERE idklienta = '.$odbiorca);

 

2 odpowiedzi

0 głosów
odpowiedź 8 stycznia 2017 przez Assasz Nałogowiec (30,460 p.)
A jaką tabelę chcesz zaktualizować? bank.klienci nie jest poprawne o ile nie chcesz zaktualizować tabelę klienci z systemu bazodanowego o nazwie bank.
komentarz 8 stycznia 2017 przez Corleone97 Początkujący (450 p.)
chcę zaktualizować tabelę klienci,znajdującą się w bazie bank. Wiem że samo 'UPDATE klienci' by starczyło, ale dopisałem ten bank bo już nie wiem co jest nie tak.
komentarz 8 stycznia 2017 przez Assasz Nałogowiec (30,460 p.)
Przede wszystkim wywaliłbym tą małpę i obsłużył ewentualne wyjątki za pomocą try catch. Sprawdził, czy nie wyświetlają się błędy, a potem spróbował wyświetlić wszystkie zmienne, czy aby na pewno są poprawne. Jeśli wstawiasz do zapytania zmienną zawierającą string to musi być ona w single quote. Możesz też przetestować te zapytanie bezpośrednio w bazie (phpmyadmin zakładka sql), podstawić przykładowe dane i zobaczyć, czy nie ma błędów.
0 głosów
odpowiedź 8 stycznia 2017 przez Corleone97 Początkujący (450 p.)
Panowie, pierwszy post tutaj i od razu wyszło że jestem idiotą. Chodziło mi o pole 'nr_konta', a w zapytaniu wpisałem 'idklienta'. Głupi błąd a parę godzin poszło i nie wróci. Mimo wszystko dzięki wszystkim za pomoc :D

Podobne pytania

0 głosów
2 odpowiedzi 536 wizyt
0 głosów
1 odpowiedź 453 wizyt
+1 głos
1 odpowiedź 1,561 wizyt
pytanie zadane 18 maja 2017 w PHP przez Sevrento Początkujący (250 p.)

93,096 zapytań

142,059 odpowiedzi

321,512 komentarzy

62,439 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...