sql >> Database >  >> RDS >> Mysql

Geen gegevens verstrekt voor parameters in voorbereide verklaring

Je hebt slechts vier argumenten gebonden, door de control string "sssd", maar je hebt veel parameters. Bij het binden van variabelen met mysqli heb je één teken nodig voor elke parameter, bijvoorbeeld:

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

(Ik neem aan dat senior en student gehele getallen zijn en de code "d" nodig hebben.)

U hoeft geen van uw variabelen te behandelen met mysqli_real_escape_string() -- dat is het punt van het gebruik van parameters. Als u ook aan escapen doet, krijgt u letterlijke backslash-tekens in uw gegevens in de database.

En u hoeft in ieder geval nooit htmlspecialchars() te gebruiken - u zou dat gebruiken bij het uitvoeren naar HTML, niet bij het invoegen in de database. Je krijgt letterlijke reeksen zoals & in uw gegevens in de database.

Over uw volgende fout:

Dit wordt veroorzaakt door het volgende:

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

Die functie verwacht dat het tweede argument een string is, een nieuwe SQL-query. Maar je hebt die vraag al voorbereid, dus je hebt het volgende nodig:

$result = mysqli_stmt_execute($stmt);



  1. ID automatisch verhogen met vervolg in MySQL

  2. Converteer een MySQL-database van latijn naar UTF-8

  3. Tel rijen per uur in SQL Server met volledige datum-tijdwaarde als resultaat

  4. Handeling-latentie in MySQL-transacties