У меня есть этот код, пытающийся вставить данные в базу данных 000webhostapp.com, но он всегда возвращает сообщение «Ошибка базы данных: не удалось зарегистрировать». В localhost (мой персональный компьютер) все работает нормально. У меня есть синтаксис, который не применим к 000webhostapp.com? Кроме того, у меня есть другие операторы вставки, которые работают для других таблиц в той же базе данных. Ниже приведен код вставки:
// If user clicks on the sign-up button
if (isset($_POST['signup-btn'])) {
$firstname = $_POST['firstname'] = ucfirst($_POST['firstname']);
$lastname = $_POST['lastname'] = ucfirst($_POST['lastname']);;
$username = $_POST['username'];
$email = $_POST['email'];
$twitter = $_POST['twitter'];
$telegram = $_POST['telegram'];
$country = $_POST['country'];
$password = $_POST['password'];
$passwordConf = $_POST['passwordConf'];
// Validation method for sign-up
if (empty($firstname)) {
$errors['username'] = "Firstname required";
}
if (empty($lastname)) {
$errors['username'] = "Lastname required";
}
if (empty($username)) {
$errors['username'] = "Username required";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['email'] = "Email address is invalid";
}
if (empty($email)) {
$errors['email'] = "Email required";
}
if (empty($twitter)) {
$errors['twitter'] = "Twitter required";
}
if (empty($telegram)) {
$errors['telegram'] = "Telegram required";
}
if (empty($country)) {
$errors['country'] = "Country required";
}
if (empty($password)) {
$errors['password'] = "Password required";
}
if ($password !== $passwordConf) {
$errors['password'] = "The two password do not match";
}
$emailQuery = "SELECT * FROM users WHERE email=? LIMIT 1";
$stmt = $conn->prepare($emailQuery);
$stmt->bind_param('s', $email);
$stmt->execute();
$result = $stmt->get_result();
$userCount = $result->num_rows;
$stmt->close();
if ($userCount > 0) {
$errors['email'] = "Email already exists";
}
if ($userCount > 0) {
$errors['username'] = "Username already exists";
}
if ($userCount > 0) {
$errors['twitter'] = "Twitter handle already exists";
}
if ($userCount > 0) {
$errors['telegram'] = "Telegram already exists";
}
if (count($errors) === 0) {
$password = password_hash($password, PASSWORD_DEFAULT);
$token = bin2hex(random_bytes(50));
$verified = false;
$sql = "INSERT INTO users (firstname, lastname, username, email, twitter, telegram, country, verified, token, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('sssssssbss', $firstname, $lastname, $username, $email, $twitter, $telegram, $country, $verified, $token, $password);
if ($stmt->execute()) {
// login user
$user_id = $conn->insert_id;
$_SESSION['id'] = $user_id;
$_SESSION['firstname'] = $firstname;
$_SESSION['lastname'] = $lastname;
$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
$_SESSION['verified'] = $verified;
sendVerificationEmail($email, $token);
// flash message
$_SESSION['message'] = "Registration successful!";
$_SESSION['alert-class'] = "alert-success";
header('location: index.php');
exit();
} else {
$errors['db_error'] = "Database error: failed to register";
}
}
}