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

0 głosów
84 wizyt
pytanie zadane 7 stycznia w PHP, Symfony, Zend przez Corleone97 Początkujący (450 p.)
zamknięte 8 stycznia 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 przez grollajt Bywalec (2,460 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 przez Corleone97 Początkujący (450 p.)
Niestety, nic to nie pomogło :/
komentarz 8 stycznia przez Chess Nałogowiec (29,870 p.)

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

2
komentarz 8 stycznia przez Arkadiusz Waluk Mędrzec (180,330 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 przez grollajt Bywalec (2,460 p.)
edycja 8 stycznia 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 przez Assasz Pasjonat (16,720 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 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 przez Assasz Pasjonat (16,720 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 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 131 wizyt
+1 głos
1 odpowiedź 98 wizyt
pytanie zadane 18 maja w PHP, Symfony, Zend przez Sevrento Początkujący (250 p.)
0 głosów
1 odpowiedź 37 wizyt
Obowiązuje już zaktualizowany regulamin.

Czy wiesz, że nie musisz już odświeżać strony głównej?

Lista pytań i odpowiedzi aktualizuje się automatycznie!

38,612 zapytań

76,494 odpowiedzi

149,402 komentarzy

18,071 pasjonatów

Przeglądających: 243
Pasjonatów: 31 Gości: 212

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...