Du har kun bundet fire argumenter af kontrolstrengen "sssd", men du har mange parametre. Når du binder variabler med mysqli, skal du bruge et tegn for hver parameter, for eksempel:
mysqli_stmt_bind_param($stmt, "sssdsssssssssdd", $firstname, $surname, $address,
$gender, $city, $province, $postalcode, $phone, $secondphone, $email,
$organization, $inriding, $ethnicity, $senior, $student);
(Jeg antager, at senior og elev er heltal og har brug for "d"-koden.)
Du behøver ikke at behandle nogen af dine variabler med mysqli_real_escape_string() -- det er meningen med at bruge parametre. Hvis du også escaper, får du bogstavelige skråstreg i dine data i databasen.
Og du behøver aldrig at bruge htmlspecialchars() under alle omstændigheder - du ville bruge det, når du udskriver til HTML, ikke når du indsætter i databasen. Du vil få bogstavelige sekvenser som &
i dine data i databasen.
Om din næste fejl:
Dette er forårsaget af følgende:
$result = mysqli_query($mysqli,$stmt);
Den funktion forventer, at det andet argument er en streng, en ny SQL-forespørgsel. Men du har allerede forberedt den forespørgsel, så du har brug for følgende:
$result = mysqli_stmt_execute($stmt);