Mysql
 sql >> Database >  >> RDS >> Mysql

Nessun dato fornito per i parametri nella dichiarazione preparata

Hai solo legato quattro argomenti, dalla stringa di controllo "sssd", ma hai molti parametri. Quando si associano variabili con mysqli, è necessario un carattere per ogni parametro, ad esempio:

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

(Suppongo che senior e student siano numeri interi e necessitino del codice "d".)

Non è necessario trattare nessuna delle tue variabili con mysqli_real_escape_string() -- questo è il punto di usare i parametri. Se esegui anche l'escape, otterrai caratteri di barra rovesciata letterali nei tuoi dati nel database.

E non hai mai bisogno di usare htmlspecialchars() in ogni caso:lo useresti durante l'output in HTML, non durante l'inserimento nel database. Otterrai sequenze letterali come & nei tuoi dati nel database.

Re il tuo prossimo errore:

Ciò è causato da quanto segue:

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

Tale funzione prevede che il secondo argomento sia una stringa, una nuova query SQL. Ma hai già preparato quella query, quindi hai bisogno di quanto segue:

$result = mysqli_stmt_execute($stmt);