Я уверен, что у меня нет никаких ошибок, однако, когда я отправляю их, я не получаю «Успех», как я должен, когда мое представление будет успешным. Файл connect.php является файлом php, который подключается к моей базе данных, и я не получаю никаких ошибок от этого, поэтому я знаю, что я подключен к моей базе данных, а header.php - это заголовок. Ничего, что могло бы вызвать какие-либо ошибки там. И нижний колонтитул - это одно и то же. Я знаю, что я подключен к моей базе данных, потому что у меня была ошибка до того, когда я тестировал свой код, однако теперь у меня нет никаких ошибок или «Успеха».Почему моя версия кода PHP не работает с моей SQL-базой данных?
Вот моя попытка:
<?php
//signup.php
include 'connect.php';
include 'header.php';
echo '<h3>Sign up</h3>';
echo '<form method="post" action="">
Username: <input type="text" name="user_name" />
Password: <input type="password" name="user_pass">
Password again: <input type="password" name="user_pass_check">
E-mail: <input type="email" name="user_email">
<input type="submit" value="sign up" />
</form>';
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$fixed_user_name = $database_connection->real_escape_string($_POST['user_name']);
$fixed_user_email = $database_connection->real_escape_string($_POST['user_email']);
$now = NOW();
$sql = "INSERT INTO users (user_name, user_pass, user_email)
VALUES ($fixed_user_name, $_POST['user_pass'], $fixed_user_email)";
if($database_connection->query($sql) === TRUE){
echo "Success";
}
else {
echo "Error: " . $sql . "<br>" . $database_connection->error;
}
}
include 'footer.php';
?>
Вот мой файл connect.php, а также:
<?php
//connect.php
$username = 'root';
$password = "root_password";
$database = 'cloud';
$database_connection = new mysqli("localhost", $username, $password, $database);
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";
?>
Что же такое в '$ database_connection-> error'? Ошибка синтаксиса? –
Включите отчет об ошибках и повторите попытку. Добавьте следующую строку вверху страницы error_reporting (E_ALL); ini_set ("display_errors", 1); – Ima
Вы широко открыты для [SQL Injections] (http://php.net/manual/en/security.database.sql-injection.php) и должны действительно использовать [Подготовленные утверждения] (http://php.net/ manual/en/mysqli.quickstart.prepared-statements.php) вместо того, чтобы объединять ваши запросы.Изменение строк не так безопасно, как можно было бы надеяться. Специально, так как вы только избегаете некоторых входов! ?? –