The fact is that I am trying to insert users through PDO and CRUD and this is generating an error which I can not solve.
The error is exactly this
SQLSTATE [HY093]: Invalid parameter number: parameter was not defined
File containing the form alta_usuarios.php:
<form action="administrar_usuario.php" method="POST">
<input type="text" name="nombre" placeholder="Nombre">
<input type="text" name="apellido" placeholder="Apellido">
<input type="text" name="dni" placeholder="DNI">
<input type="text" name="usuario" placeholder="Usuario">
<input type="password" name="contrasena" placeholder="Contraseña">
<input type="email" name="email" placeholder="Correo">
<input type="text" name="direccion" placeholder="Direccion">
<input type="text" name="cod_postal" placeholder="Codigo Postal">
<input type="tel" name="tel" placeholder="Teléfono">
<input type="text" name="fecha_nac" placeholder="Fecha nacimiento">
<input type="text" name="foto" placeholder="foto">
<input type="text" name="curso" placeholder="curso">
<input type='hidden' name='insertar' value='insertar'>
<!--Con esto ejecutamos la funcion de insertar-->
<select name="tipo">
<option value="1">Admin</option>
<option value="2">Administración</option>
<option value="3">Alumno</option>
<option value="4">Profesor</option>
</select>
<input type="submit" name="altaUsuario" value="Crear">
Driver admin_user.php:
<?php
include_once('crud_usuario.php');
include_once('class_usuarios.php');
$crud = new CrudUsuario();
$usuario = new Usuario();
if (isset($_POST['insertar'])) {
$usuario->setIdUsuario(NULL);
$usuario->setDni($_POST['dni']);
$usuario->setNombre($_POST['nombre']);
$usuario->setApellido($_POST['apellido']);
$usuario->setContrasena($_POST['contrasena']);
$usuario->setEmail($_POST['email']);
$usuario->setUsuario($_POST['usuario']);
$usuario->setDireccion($_POST['direccion']);
$usuario->setCodPostal($_POST['cod_postal']);
$usuario->setTel($_POST['tel']);
$usuario->setFechaNac($_POST['fecha_nac']);
$usuario->setFoto($_POST['foto']);
$usuario->setCurso($_POST['curso']);
$usuario->setTipo($_POST['tipo']);
$crud->insertar($usuario);
}
?>
File containing the crud, crud_usuario.php:
<?php
require_once('conexion.php');
class CrudUsuario{
//constructor de la clase
public function __contruct(){}
public function insertar($usuario){
$db=BaseDatos::conectar();
try {
$insert=$db->prepare('INSERT INTO Usuarios values(NULL,:dni,:nombre,:apellido,:contrasena,:email,:usuario,:direccion,:cod_postal,:telefono,:fecha_nac,:foto,:curso,:estado,:tipo)');
$insert->bindValue('id_usuario',$usuario->getIdUsuario());
$insert->bindValue('nombre',$usuario->getNombre());
$insert->bindValue('apellido',$usuario->getApellido());
$insert->bindValue('contrasena',$usuario->getContrasena());
$insert->bindValue('email',$usuario->getEmail());
$insert->bindValue('usuario',$usuario->getUsuario());
$insert->bindValue('direccion',$usuario->getDireccion());
$insert->bindValue('cod_postal',$usuario->getCodPostal());
$insert->bindValue('telefono',$usuario->getTel());
$insert->bindValue('fecha_nac',$usuario->getFechaNac());
$insert->bindValue('foto',$usuario->getFoto());
$insert->bindValue('curso',$usuario->getCurso());
$insert->bindValue('estado',$usuario->getEstado());
$insert->bindValue('tipo',$usuario->getTipo());
$insert->execute();
}
catch (PDOException $e) {
print $e->getMessage ();
}
}
}
?>