• 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.

VPS Starter Arubacloud
0 głosów
832 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 (287,550 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 480 wizyt
0 głosów
1 odpowiedź 354 wizyt
+1 głos
1 odpowiedź 1,296 wizyt
pytanie zadane 18 maja 2017 w PHP przez Sevrento Początkujący (250 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 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!

...