INSERT INTO niezgodność argumentu

0

używam funkcji rejestrującej użytkownika

function register_user($register_data) {
	array_walk($register_data, 'array_sanitize');
	$register_data['haslo'] = md5($register_data['haslo']);
	
	$fields = implode(', ', array_keys($register_data));
	$data = '\'' . implode('\', \'', $register_data). '\'';
	$check = mysql_query("INSERT INTO users ($fields) VALUES ($data)");
	echo mysql_error($check); 

przy rejestracji tworzę tablicę której nazwy są odpowiednikiem nazw kolumn w tabeli, dzięki czemu w zapytaniu używam $fields jako pola i $data jako dane do wpisania.

$register_data = array(
	'login' => $_POST['login'],
	'haslo' => $_POST['haslo'],
	'imie' => $_POST['imie'],
	'nazwisko' => $_POST['nazwisko'],
	'email' => $_POST['email'],
	);
	register_user($register_data); 

i tu zaczyna sie problem. Mysql_error zwraca

supplied argument is not a valid MySQL
.
Zaś wpisanie tego w phpmyadmin, w sekcji kodu sql skutkuje dodaniem tych rekordów do bazy poprawnie.

Czytałem o składni INSERT INTO i wygląda ona w ten sposób

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

może ktoś mi podpowie w czym tkwi problem?

aha, w tej tabeli mam 2 pola więcej konkretnie id na 1 i aktywacja na ostatnim ale z tego co przeczytalem w manualu
korzystam w ten sposób z

Insert Data Only in Specified Columns
, więc nie rozumiem czemu problem sie pojawił.

przykładowe echo dla zapytania:

INSERT INTO users (login, haslo, imie, nazwisko, email) VALUES ('testlogin', '342df5b036b2f28184536820af6d1caf', 'Marcin', 'Zaniewski', '[email protected]')  
0

edit:
aaaaaaaaaaaaaa.
to mysql_error tak wywala. już wyjaśniam dlaczego.

przed wyświetleniem błędu sprawdź w ogóle czy błąd nastąpił! dodatkowo zapewne nie potrzebujesz przekazywać jakiegokolwiek parametru do mysql_error, a jeżeli już - niech to będzie identyfikator połączenia, a nie zwrotka od mysql_query..

$check = mysql_query("INSERT INTO users ($fields) VALUES ($data)");
if (!$check) {
  echo mysql_error();
}
0

Można zamknąć, poprawiłem:

$fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 

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