Я пытаюсь написать программу для своей тестовой лаборатории с окнами 2012 + MySQL + IIS + PHP, моя программа считывает базу данных, но когда я пытаюсь записать данные в в базе данных он показывает «Array ([id] => 0)», это означает, что моя программа не записывает данные в базу данных, в чем проблема? Я начинаю писать программу, пожалуйста, помогите мне? Мой код в соответствии с:PHP Array ([id] => 0)
<?php
session_start();
error_reporting(E_ALL & ~E_NOTICE);
// Connect to Database
$link = mysqli_connect("localhost", "root", "password", "admin");
// Connection Status
if ($link->connect_error) {
die ("Connection Failed : " . $link->connect_error);
}
if ($_POST['submit']) {
if (!$_POST['email'])
$error .= "<br />Bitte trage deine Email Addresse ein !";
else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$error .= "<br />Bitte eine korrekte email Address ein !";
if (!$_POST['password'])
$error .= "<br />Bitte trage dein Passwort ein !";
else {
if (strlen($_POST['password']) < 8)
$error .= "<br />Bitte trage ein längeres Password ein !";
if (!preg_match('`[A-Z]`', $_POST['password']))
$error .= "<br />Bitte nutze ein Großbuchstaben password ein !";
}
if (isset($error))
echo "Es gab fehler in deinem Login Details : " . $error;
else {
$query = "SELECT * FROM `benutzer` WHERE email ='" . mysqli_real_escape_string($link, $_POST['email']) . "'";
$result = mysqli_query($link, $query);
$results = mysqli_num_rows($result);
if ($results) echo "Die eMailaddresse ist bereits vergeben. <br />Möchtest do dich einloggen ?";
$query = "INSERT INTO benutzer (email, password) VALUES ('" . mysqli_real_escape_string($link, $_POST['email']) . "', '" . md5(md5($_POST['email']) . $_POST['password']) . "')";
mysqli_query($link, $query);
echo "<br />Du hast dich erfolgreich registriert ! ";
$_SESSION['id'] = mysqli_insert_id($link);
print_r($_SESSION);
}
}
?>
<form method="post">
<input type="email" name="email" id="email" id="email" />
<input type="password" name="password" />
<input type="submit" name="submit" value="Einlogen" />
</form>
Ваши заявления if/else беспорядок. Я бы предложил использовать фигурные скобки '{}' для всех. Скорее всего, вы обнаружите синтаксическую ошибку, которая после исправления устранит вашу проблему. По крайней мере, если вы отредактируете свой очищенный код в своем вопросе, нам будет намного легче увидеть, что происходит. – amflare
также вставить "echo mysqli_error ($ link);" после вызова mysqli_query – strangeqargo
** ПРЕДУПРЕЖДЕНИЕ **: при использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк или конкатенацию, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http: // bobby-tables.com /), если вы сделаете простую ошибку. – tadman