Я полностью новичок в PDO, и я пытаюсь преобразовать мою страницу регистрации, Я могу получить информацию в базе данных, но я упал. Я делаю ее более сложной, чем она должна быть. DO Мне нужны 2 набора POST в каждой функции?Mysql PDO Подтверждение конверсии
также мои ошибки проверки эха конфликтуют с ИСКЛЮЧЕНИЕМ в функции create.
У меня есть функция регистра, и я называю это с помощью следующего на моей книге странице
<?php validate_register();?>
Это мой Validate код
/* Validate register */
function validate_register(){
$errors = [];
$min = 3;
$max = 20;
if(isset($_POST['signupBtn'])){
$email = $_POST['email'];
$username = $_POST['username'];
$birthdate = $_POST['birthdate'];
$password = $_POST['password'];
if (empty($email)) {
$errors[] = "Email Address Required.";
}
if (empty($username)) {
$errors[] = "Userame Required.";
}
if (empty($birthdate)) {
$errors[] = "Date of Birth Required.";
}
if (empty($password)) {
$errors[] = "Password Required.";
}
if (! empty($errors)) {
echo validation_errors($errors[0]);
} else {
if (create_user($email, $username, $birthdate, $password)) {
set_message('Please check your email for account Information.');
redirect ("index.php");
}
}
}
}
регистра и, если проверка проходит создает пользователь
/* create user */
function create_user($email, $username, $birthdate, $password){
$email = $_POST['email'];
$username = $_POST['username'];
$birthdate = $_POST['birthdate'];
$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
try {
$sqlInsert = "INSERT INTO users (email, username, birthdate, password)
VALUES(:email, :username, :birthdate, :password)";
$stmt = $db->prepare($sqlInsert);
$stmt->execute(array(':email' =>$email, ':username' => $username, ':birthdate' => $birthdate, ':password' => $hashed_password));
if ($stmt->rowCount() == 1) {
return true;
}
}catch (PDOException $e){
$result = $e->getMessage();
}
}
Спасибо за объяснение, но увидеть, где мой валидация есть? в mysqli у меня была проверка эхо ошибки, но PDO, похоже, требует ошибки PDOException. – Case
PDOException - если ваш SQL некорректен или существует некоторая другая проблема с запросом mysql. Подтверждение, которое у вас есть, кажется хорошим для значений. – Rasclatt
Кроме того, вам не обязательно нужно 'try' /' catch'. Это хорошо для сообщения журналу, но вы не можете показывать эту ошибку результата непосредственно пользователю. – Rasclatt