Skrypt nie zapisuje danych do bazy gdy pozostałe skrypty zapisują do tej samej tabeli

0

Mam problem ze skryptem który właśnie piszę. Ma za zadanie aktualizować dane w tabeli "Users" po zmodyfikowaniu ich za pomocą formularza. Inne skrypty modyfikujące dane w tej samej tabeli działają poprawnie.

Oto kod tego skryptu:


<?php
		include('admin/config.php');
		

$row = mysql_fetch_row($_GET['id']);

$id = $_GET['id'];
$name = $_GET['name'];
$surname = $_GET['surname'];
$phone_number = $_GET['phone_number'];
$email = $_GET['email'];
$login = $_GET['login'];
$haslo = $_GET['haslo'];
$id_group = $_GET['id_group'];


$names = $_POST['name'];
$surnames = $_POST['surname'];
$phone_numbers = $_POST['phone_number'];
$emails = $_POST['email'];
$logins = $_POST['login'];
$haslos = $_POST['haslo'];
$id_groups = $_POST['id_group'];


	
	echo '<form method="post" action="mpusersedit.php">';
	echo '<label>Imię:</label><input type="text" name="name" value="'.$name.'"></input>';
	echo '<label>Nazwisko:</label><input type="text" name="surname" value="'.$surname.'"></input>';
	echo '<label>Numer telefonu:</label><input type="text" name="phone_number" value="'.$phone_number.'"></input>';
	echo '<label>Email:</label><input type="text" name="email" value="'.$email.'"></input>';
	echo '<label>Login:</label><input type="text" name="login" value="'.$login.'"></input>';
	echo '<label>Hasło:</label><input type="text" name="haslo" value="'.$haslo.'"></input>';
	echo '<label>Grupa użytkowników:</label><input type="text" name="id_group" value="'.$id_group.'"></input>';
	echo '<input type="submit" value="Aktualizuj"/>';
	echo '</form>';

	echo $names;
	$query = mysql_query("UPDATE Users SET name='$names', surname='$surnames', phone_number='$phone_numbers', email='$emails', login='$logins', haslo='$haslos', id_group='$id_groups', WHERE id =$id");
	
	?>

0

A jaki występuje błąd? Co zwraca mysql_error()?

ps. mimo, że wygląda to na jakiś panel administracyjny to poczytaj o sql injection.

0

Mysql_error() nic nie wywala.

Tak, jest to prosty panel moderatora.

Jeszcze nie zabezpieczałem tego panelu, to robię zawsze dopiero jak funkcjonalność działa poprawnie więc jak będzie mi zapisywać dane do bazy z tego skryptu to dopiero go zabezpieczę ;-)

0

To co w takim razie "nie działa"? Wykonaj po wysłaniu zapytania mysql_affected_rows i pokaż co zwraca.

0

Skrypt ma za zadanie zmianę danych w tabeli Users w wyznaczonych kolumnach jednak dane nie są zmieniane.
mysql_affected_rows zwraca... -1.

0

Co oznacza, że zapytanie się nie powiodło.

  1. Wydziel zapytanie do oddzielnej zmiennej. Wyświetl je.
  2. Jeszcze raz wywołaj i wyświetl wynik mysql_error() (po wykonaniu zapytania).
0

Zlikwiduj przecinek przed WHERE.
Jeśli używasz nazw systemowych - users, login, to dawaj je w grawisach.

UPDATE `Users` SET `name`='$names', `surname`='$surnames', `phone_number`='$phone_numbers', `email`='$emails', `login`='$logins', `haslo`='$haslos', `id_group`='$id_groups' WHERE `id` =$id
0

Sprawdzałem kod, jednak nie wiem czemu nie chcce działać, miałem podobny problem przy update na formularzu i jak się wkurzyłem, przeniosłem update to innego pliku który po wykonaniu przensił sie ponownie na strone. Jednak trzeba by było przenośić jakąś flage lub coś by mógł plik wyświetlic komunikat powodzenia albo neipowodzenia.
Możliwości jest sporo jeśli nie działa takim sposób UPDATE, to zawsze można wymyślić inny, niekoniecznie lepszy, ale działający, później można zoptymalizować kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1