$statement = $connect->prepare('INSERT INTO `user`(`id`, `imie`, `nazwisko`, `email`, `haslo`, `numer`) VALUES ([value-1], `:imie`, `:nazwisko`, `:email`, `:haslo`, `:numer` )'); if($statement){ $result = $statement->execute([ ':imie' => $data['name'], ':nazwisko' => $data['lastname'], ':email' => $data['email'], ':haslo' => $data['password'], ':numer' => $data['phone'], ]); if($result) { $_SESSION['messages'] [] = 'Dziękujemy za rejestrację. W celu weryfikacji sprawdź swój adres e-mail.'; http://www.php.net/header('string: Location: register.php'); http://www.php.net/exit; } }
Co to jest?
[value-1]
Dodatkowo przechwytuj wyjątki.
To po co podajesz to id skoro jest autoincrement i po cholere [value-1]
Wywal id i to dziwne cos
Tak czy inaczej mysql nie ma składni z []. https://dev.mysql.com/doc/refman/8.0/en/identifiers.html
Musisz je wcześniej włączyć. Domyślnie jest silent. No i oczywiście robisz przekierowania więc za dużo nie zobaczysz.
https://www.php.net/manual/en/pdo.error-handling.php
http://www.php.net/header('string: Location: register.php');
http://www.php.net/header('string: Location: register.php');
Wydają się dość jasne. Czy dalej masz problem?
<?php http://www.php.net/error_reporting(E_ALL); http://www.php.net/ini_set('display_errors','1'); http://www.php.net/session_start(); http://www.php.net/header( 'Content-Type: text/html; charset=utf-8' ); $data = $_POST; if( http://www.php.net/empty($data['name']) || http://www.php.net/empty($data['lastname']) || http://www.php.net/empty($data ['email']) || http://www.php.net/empty($data['phone']) || http://www.php.net/empty($data['password'])) { $_SESSION ['messages'] [] = 'Wprowadź wymagane dane'; http://www.php.net/header("Location:register.php"); http://www.php.net/exit; } $db_p = ''; $db_u = 'root'; $db_s = 'localhost'; $db_n = 'test'; $connect = new mysqli("$db_s" , "$db_u" , "$db_p" , "$db_n"); if($connect->connect_error){ $_SESSION ['messages'] [] = 'Nie udało połączyć się z serwerem'; http://www.php.net/header("Location:register.php"); http://www.php.net/exit; } $statement = $connect->prepare('SELECT * FROM user WHERE email = :email OR numer = :numer'); if($statement){ $result = $statement->execute([ ':email' => $data['email'], ':numer' => $data['phone'], ]); $result = $statement->fetchAll(PDO::FETCH_ASSOC); if(!http://www.php.net/empty($result)){ $_SESSION['messages'] [] = 'Podany adres e-mail lub numer telefonu jest już przypisany do konta'; http://www.php.net/header('Location:register.php'); http://www.php.net/exit; } } $statement = $connect->prepare('INSERT INTO `user`(`id`, `imie`, `nazwisko`, `email`, `haslo`, `numer`) VALUES ( `:imie`, `:nazwisko`, `:email`, `:haslo`, `:numer` )'); if($statement){ $result = $statement->execute([ ':imie' => $data['name'], ':nazwisko' => $data['lastname'], ':email' => $data['email'], ':haslo' => $data['password'], ':numer' => $data['phone'], ]); if($result) { $_SESSION['messages'] [] = 'Dziękujemy za rejestrację. W celu weryfikacji sprawdź swój adres e-mail.'; http://www.php.net/header('Location:register.php'); http://www.php.net/exit; } } ?>
Korzystasz z mysqli nie pdo. Execute nie przyjmuje żadnych parametrów.
Jeśli nie wstawiasz nic do pola `id`, to nie powinno być go na liście pól w INSERT.
A wstawianych wartości nie obejmuje się w `.
Dobra całość działa okazało się że problemem były ``(tzw. ciapki)
No tak, ` to cudzysłów dla nazw w MySQL, a ' lub " to dla stringów w MySQL jedynie, trzeba o tym pamiętać, mnie też kilka razy spotkał ten problem.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)