Смущающий вопрос здесь, поскольку это, очевидно, что-то настолько простое, что все идет не так. (Также для тех, кто претендует на «дубликат», я потратил 3 часа на то, чтобы посмотреть соответствующие вопросы и направить многочисленные ответы на практике, но безрезультатно, отсюда и возник вопрос.)запрос не отправляется в базу данных
Я нахожусь в процесс создания регистрационной формы пользователя с использованием PHP и MySQL, все прекрасно передает, однако я не вижу значений в моей базе данных? Таким образом, очевидно, что он не представляет штраф.
ВОПРОС
Почему не подает?
Я сделал var_dump ($ _ POST); и результат:
array(4) { ["name"]=> string(14) "Foo Bar" ["email"]=> string(18) "[email protected]" ["password"]=> string(8) "foobar123" ["submit"]=> string(8) "Register" }
Я также сделал print_r ($ query); на запросе, чтобы увидеть, что передается и результат:
INSERT INTO user_info (name, email, password) VALUES ('Foo Bar', '[email protected]', '$2y$10$36UQIGc6OwFrNs/TBfc6letRlrrdRGGoj.lh65puJElDJER08ozQe')
Таблица user_info уже существует, и мое подключение к базе данных в порядке. Я попытался использовать обратные запятые для имен столбцов, я также пытался не использовать запятые для значений, но ничего, кажется, не отправляет.
Вот код:
HTML -
<form method="post" name="register-form" action="database.php">
Name: <input type="text" name="name"><br>
Email: <input type="email" name="email"><br>
Password: <input type="password" name="password">
<input type="submit" name="submit" value="Register" />
</form>
PHP -
<?php
require 'dbconnect.php';
function registerUser() {
$username = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_BCRYPT);
$mysqli = mysqli_init();
$query = "INSERT INTO user_info (name, email, password) VALUES ('$username', '$email', '$hash')";
$mysqli->query($con, $query); //$con referenced in dbconnect to connect to db
var_dump($_POST);
print_r($query);
}
if(isset($_POST['submit']) === TRUE){
registerUser();
}
?>
dbconnect.php
<?php
$dbserver = 'localhost';
$dbusername = 'foo';
$dbpassword = 'bar';
$dbdatabase = 'usersdb';
$con = mysqli_connect($dbserver, $dbusername, $dbpassword, $dbdatabase);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
Я начинаю думать, что это может быть разрешение но это на моем локальном хосте, используя XAMPP, так неуверенно это не может быть? Любая помощь будет принята с благодарностью! Спасибо.
Используйте 'mysql_real_escape_string', чтобы не стать мишенью SQL инъекций. –
Можно ли запустить тот же запрос из Workbench (с теми же учетными данными)? – thebjorn
@KeVin Я знал, что это всплыло, я забыл упомянуть в вопросе, что у меня изначально была mysql_real_escape_string, но я взял его, чтобы я мог сделать его как можно более простым. –