sql >> Databasteknik >  >> RDS >> Mysql

Inga data tillhandahålls för parametrar i det förberedda uttalandet

Du har bara bundit fyra argument, av kontrollsträngen "sssd", men du har många parametrar. När du binder variabler med mysqli behöver du ett tecken för varje parameter, till exempel:

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

(Jag antar att senior och student är heltal och behöver "d"-koden.)

Du behöver inte behandla någon av dina variabler med mysqli_real_escape_string() -- det är poängen med att använda parametrar. Om du också flyktar kommer du att få omvänd snedstreck i dina data i databasen.

Och du behöver aldrig använda htmlspecialchars() i alla fall - du skulle använda det när du matar ut till HTML, inte när du infogar i databasen. Du kommer att få bokstavliga sekvenser som & i dina data i databasen.

Om ditt nästa fel:

Detta orsakas av följande:

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

Den funktionen förväntar sig att det andra argumentet är en sträng, en ny SQL-fråga. Men du har redan förberett den frågan, så du behöver följande:

$result = mysqli_stmt_execute($stmt);



  1. Hur man distribuerar mycket tillgänglig PostgreSQL med en enda slutpunkt för WordPress

  2. Installera MySQLdb på Mac OS X

  3. 7 saker att se upp med i din PostgreSQL-distribution

  4. Vad är en anpassad körtidsbild i Java 9?