Formularz nie dodaje rekordów do bazy

0

Witam stworzyłem formularz rejestracji lecz po przesłaniu go w bazie nie pojawia się nowy rekord nie wiem czym to może być spowodowane(zaznaczam że dopiero się uczę)

<?php
session_start();
require_once ('..\config\config.php');

$name = $_POST['name'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$username = $_POST['username'];
$type = 0;
$status = 1;

$query = "SELECT * FROM users WHERE username like '$username'";
$result = $db->query($query);
$row = $result->num_rows;



if($_POST['captcha'] != $_SESSION['digit'])

{


	$_SESSION['alert'] = '<script type="text/javascript">swal("Błąd logowania", "Błędne CAPTCHA", "error");</script>';
				header('location: ..\view\register.php');

}

else {



if ($row>0)
{
	$_SESSION['alert'] = '<script type="text/javascript">swal("Błąd rejestracji", "Podany login już istnieje", "error");</script>';


	header('location: ..\view\register.php');
	$db->close();
	exit();
}

if ($password==$password2)
{

if (preg_match("/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+|-]).{8,30}$/",$password)){


$password = sha1($_POST['password']);

$register = "INSERT INTO `users`(`id`,`name`,`username`,`password`,`status`,`type`) VALUES (NULL,'$name','$username','$password','$status','$type')";
$db->query($register);

echo $register;


$_SESSION['alert'] = '<script type="text/javascript">swal("Rejestracja zakończona sukcesem", "Został przydzielony Ci numer klienta który będzie widoczny po zalogowaniu", "success");</script>';


  header('location: ..\index.php');
}
else
{

	$_SESSION['alert'] = '<script type="text/javascript">swal("Błąd rejestracji", "Hasło nie spełnia wymagań bezpiedczeństwa", "warning");</script>';


	header('location: ..\view\register.php');
}


}
else

	{

  $_SESSION['alert'] = '<script type="text/javascript">swal("Błąd rejestracji", "Podane hasła różnią się", "error");</script>';
  	echo $_SESSION['register_alert'];

   header('location: ..\view\register.php');


	}

}
$db->close();
exit();
0

@Pan Zimny: Wywala Tobie jakiś błąd? Czemu dajesz w INSERT INTO NULL do kolumny ID skoro ona jest autoincrement (prawdopodobnie)?

0

@leonpro778:
nic mi nie wywala, id mam ustawione jak autoincrement też przy innych formularzach w tej apce i tam też wstawiam NULL i wszystko działa

tutaj np dodawanie notatek:

<?php
session_start();
require_once ('..\config\config.php');

$user_id = $_SESSION['user_id'];
$plant_id = $_SESSION['plant_id'];
$content = $_POST['content'];

$add = "INSERT INTO `user_note`(`id`,`id_user`,`id_plant`,`content`) VALUES (NULL,'$user_id','$plant_id','$content')";
$db->query($add);

echo $add;

header('location: ..\view\note.php?id='.$plant_id.'   ');



$db->close();
exit();

2

też wstawiam NULL i wszystko działa

To złe podejście, nawet jak działa.
Do jakiej bazy się łączysz? Czego używasz pod spodem tej metody query()? Jeśli to mysqli to możesz zwrócić wynik zapytania i sprawdzić czy to kwestia samego zapytania.

$registerInsertResult = $db->query($register);
if($registerInsertResult === false){
    die('Insert nie wykonał się poprawnie');
}

I może warto pobrać ostatni błąd zapytania zgodnie z dokumentacją:
https://www.php.net/manual/en/mysqli.error.php
Być może nawet ten wraper którego używasz takie błędy gdzieś zapisuje.
BTW masz SQL injection i lepiej je wyeliminuj najlepiej przechodząc na PDO i parametryzację zapytań.

1
Pan Zimny napisał(a):

@leonpro778:

nic mi nie wywala, id mam ustawione jak autoincrement też przy innych formularzach w tej apce i tam też wstawiam NULL i wszystko działa

Chodziło mi tylko o to, że nie szkoda Ci tego pisać :) Co do błędów to tak jak pisał @jurek1980 - sprawdź czy zapytanie się wykonuje poprawnie.

0

@jurek1980: baza mysqli
po dodaniu tego wywala że INSERT nie wykonał się poprawnie

0

No to sprawdź, czemu nie wykonał się poprawnie. Może wywal po prostu wstawianie null do ID.

2

Na próbę zrób tak:

$registerInsertResult = $db->query($register);
if($registerInsertResult === false){
   var_dump($db->error);
    die('Insert nie wykonał się poprawnie');
}

Jak nie, zrób echo tego zapytania ( zmiennej register) i spróbuj wykonać to zapytanie w jakimś programie do obsługi bazy jaki tam sobie używasz.

0

Unknown column 'status' in 'field list
nie rozumiem dlaczego mówi mi że to błąd może dlatego że mało spałem status mam ustawiony jako zawsze "1" przy dodawaniu konta

2

Nieznana kolumna, albo jej nie masz w tabeli, albo nazywa się ona jednak inaczej.
Pro tip. Jeśli coś ma być na stałe usatwione w bazie, to na bazie ustawiasz default value i potem w Insert pomijasz tą kolumnę, aż do momentu kiedy faktycznie nie potrzebujesz tam zapisać czegoś innego.

0

OMG JAKI ŻAL dobra zamiast 'id_status" i "id_type" miałem napisane w kodzie po prostu status i type dzięki za pomoc

0

aczkolwiek teraz dodaje mi do bazy dwa rekordy zamiast jednego i żeby się zalogować na dodane konto muszę ręcznie usuwać jeden rekord z bazy

1

Z przedstawionego kodu to nie wynika. Przejrzyj go jeszcze raz. Może gdzieś zdublowałeś linie etc.

0

Ok po prostu źle wstawiłem kod od Ciebie do sprawdzania inserta i to on powodował dublowanie WIELKIE DZIĘKI ZA POMOC

0

Czy masz połączenie do $db, nie widzę inicjalizacji? W mysqlu robiłem takie połoczenie

$conn = mysqli_connect($host, $user, $pass, $db);

i na $conn wykonuje zapytania typu query()

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