sql >> Base de Datos >  >> RDS >> Mysql

No se proporcionaron datos para los parámetros en la declaración preparada

Solo ha vinculado cuatro argumentos, mediante la cadena de control "sssd", pero tiene muchos parámetros. Al vincular variables con mysqli, necesita un carácter para cada parámetro, por ejemplo:

mysqli_stmt_bind_param($stmt, "sssdsssssssssdd", $firstname, $surname, $address, 
    $gender, $city, $province, $postalcode, $phone, $secondphone, $email, 
    $organization, $inriding, $ethnicity, $senior, $student);

(Supongo que senior y estudiante son números enteros y necesitan el código "d").

No necesita tratar ninguna de sus variables con mysqli_real_escape_string(); ese es el objetivo de usar parámetros. Si también escapa, obtendrá caracteres de barra invertida literales en sus datos en la base de datos.

Y nunca necesita usar htmlspecialchars() en ningún caso; lo usaría al enviar a HTML, no al insertar en la base de datos. Obtendrá secuencias literales como & en sus datos en la base de datos.

Re su próximo error:

Esto es causado por lo siguiente:

$result = mysqli_query($mysqli,$stmt);

Esa función espera que el segundo argumento sea una cadena, una nueva consulta SQL. Pero ya ha preparado esa consulta, por lo que necesita lo siguiente:

$result = mysqli_stmt_execute($stmt);