PHP - Registerform не говорит об ошибке, но добавляет сохранение в БД

82
10

У меня есть один регистр. Когда я его заполняю, он добавляет в базу данных. Но ошибка только говорит: есть одна ошибка. Я новичок в PHP, но я, как 3 часа, пытаюсь найти ошибку. Надеюсь, кто-то может мне помочь здесь! Спасибо!

<?php 
session_start();
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
?>
<!DOCTYPE html>
<html>
<head>
<title>Registrierung</title>
</head>
<body>

<?php
$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll

if(isset($_GET['register'])) {
$error = false;
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$passwort1 = $_POST['passwort1'];
$hotelname = $_POST['hotelname'];
$ansprech = $_POST['ansprech'];
$telefon = $_POST['telefon'];

if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Bitte eine gültige E-Mail-Adresse eingeben<br>';
$error = true;
}
if(strlen($passwort) == 0) {
echo 'Bitte ein Passwort angeben<br>';
$error = true;
}
if($passwort != $passwort1) {
echo 'Die Passwörter müssen übereinstimmen<br>';
$error = true;
}

//Überprüfe, dass die E-Mail-Adresse noch nicht registriert wurde
if(!$error) {
$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();

if($user !== false) {
echo 'Diese E-Mail-Adresse ist bereits vergeben<br>';
$error = true;
}
}

//Keine Fehler, wir können den Nutzer registrieren
if(!$error) {
$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);

$statement = $pdo->prepare("INSERT INTO users (email, passwort, hotelname, ansprech, telefon) VALUES (:email, :passwort, :hotelname, :ansprech, :telefon;)");
$result = $statement->execute(array('email' => $email, 'passwort' => $passwort_hash, 'hotelname' => $hotelname, 'ansprech' => $ansprech, 'telefon' => $telefon));

if($result) {
echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
$showFormular = false;
} else {
echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
}
}
}

if($showFormular) {
?>
<form action="?register=1" method="post">
<form class="form-horizontal">
<fieldset>

<!-- Form Name -->
<legend>Form Name</legend>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="Hotelname">Hotelname</label>
<div class="col-md-4">
<input name="hotelname" class="form-control input-md" id="hotelname" required="" type="text" placeholder="Hotelname">

</div>
</div>

<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="Ansprechpartner">Ansprechpartner</label>
<div class="col-md-4">
<input name="ansprech" class="form-control input-md" id="ansprech" required="" type="text" placeholder="Ansprechpartner">

</div>
</div>

<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="Email">Email</label>
<div class="col-md-4">
<input name="email" class="form-control input-md" id="email" required="" type="text" placeholder="Email-Adresse">

</div>
</div>

<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="Telefon">Telefon</label>
<div class="col-md-4">
<input name="telefon" class="form-control input-md" id="telefon" required="" type="text" placeholder="Telefonnummer">

</div>
</div>

<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="passwort">Passwort</label>
<div class="col-md-4">
<input name="passwort" class="form-control input-md" id="passwort" required="" type="password" placeholder="Passwort">

</div>
</div>

<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="passwort1">Passwort Wiederholen</label>
<div class="col-md-4">
<input name="passwort1" class="form-control input-md" id="passwort1" required="" type="password" placeholder="Passwort Wiederholen">

</div>
</div>

</fieldset>
<input type="submit" value="Abschicken">
</form>

<?php
} //Ende von if($showFormular)
?>

</body>

После отправки только ошибки: Сохранение ошибки, но не показывая мне, какую строку или что-то еще.

спросил(а) 2018-02-02T14:04:00+03:00 2 года, 9 месяцев назад
1
Решение
58

Вам не хватает двоеточий:

$result = $statement->execute(array(':email' => $email));

а также

$result = $statement->execute(array(':email' => $email, ':passwort' => $passwort_hash, ':hotelname' => $hotelname, ':ansprech' => $ansprech, ':telefon' => $telefon));

И, как указано @user2486, есть дополнительная ; in :telefon; :

 $statement = $pdo->prepare("INSERT INTO users (email, passwort, hotelname, ansprech, telefon) VALUES (:email, :passwort, :hotelname, :ansprech, :telefon)");

ответил(а) 2018-02-02T14:05:00+03:00 2 года, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема