Несколько дней назад я начал работать с базами данных MySQL на своем локальном сервере, на данный момент все шло хорошо, пока я не добавил пользовательскую переменную, я сделал это только с электронной почтой, но не с пользователем, теперь, когда я добавил эту переменную, я получаю ошибка
«Предупреждение: PDOSTament::execute(): SQLSTATE[HY093]: недопустимый номер параметра: количество связанных переменных не соответствует количеству токенов в C:\xampp\htdocs\2018\Register2\signup.php в строке 11»
и я уже проанализировал свой код и не могу найти проблему, мой код signup.php
<?php
require 'database.php';
$message = '';
if (!empty($_POST['usuario']) && !empty($_POST['password'])) {
$sql = "INSERT INTO usuarios (usuario, email, password) VALUES (:usuario, :email, :password)";
$stmt = $conn -> prepare($sql);
$stmt -> bindParam(':usuario',$_POST['usuario']);
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$stmt -> bindParam(':password',$_POST['password']);
if ($stmt -> execute()) {
$message = 'Se ha creado su cuenta satisfactoriamente en la pagina';
}
else {
$message = 'Lo sentimos, pero ha ocurrido un problema con la base de datos';
}
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Registrarse</title>
<link rel="stylesheet" href="assets/css/style.css">
</head>
<body>
<?php require 'partials/header.php' ?>
<?php if (!empty($message)):
?>
<p><?= $message ?></p>
<?php
endif;
?>
<h1>Registrarse</h1>
<span>ó <a href="login.php">Iniciar Sesión</a></span>
<form action="signup.php" method="POST">
<input type="text" name="usuario" placeholder="Usuario">
<input type="text" name="email" placeholder="Email">
<input type="password" name="password" placeholder="Contraseña">
<input type="password" name="confirm_password" placeholder="Confirme la contraseña">
<input type="submit" value="Enviar">
</form>
</body>
</html>
а база данных.php такова:
<?php
$server = 'localhost';
$username = 'root';
$password = '';
$database = 'usuarios';
try {
$conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
} catch (PDOException $e) {
die('Connection Failed: ' . $e->getMessage());
}
?>
НАКОНЕЦ, С КОММЕНТАРИЯМИ, КОТОРЫЕ Я ДЕЛАЮ ВАМ, ВАШ КОД ДОЛЖЕН БЫТЬ СЛЕДУЮЩИМ
Конечно, когда вы выполняете вставку, вы ставите параметры, а затем ставите значения, как они написаны. Вот пример кода: