sql >> Databáze >  >> RDS >> Mysql

Pro parametry v připraveném výpisu nejsou dodány žádné údaje

Svázali jste pouze čtyři argumenty pomocí řídicího řetězce "sssd", ale máte mnoho parametrů. Při vázání proměnných pomocí mysqli potřebujete jeden znak pro každý parametr, například:

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

(Předpokládám, že starší a student jsou celá čísla a potřebují kód "d".)

Nemusíte ošetřovat žádnou ze svých proměnných pomocí mysqli_real_escape_string() -- to je smysl použití parametrů. Pokud provedete také escapování, získáte ve svých datech v databázi doslovné zpětné lomítko.

A v žádném případě nemusíte nikdy používat htmlspecialchars() – ten byste použili při výstupu do HTML, nikoli při vkládání do databáze. Získáte doslovné sekvence jako & ve vašich datech v databázi.

Re vaše další chyba:

To je způsobeno následujícím:

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

Tato funkce očekává, že druhý argument bude řetězec, nový SQL dotaz. Ale tento dotaz jste již připravili, takže potřebujete následující:

$result = mysqli_stmt_execute($stmt);



  1. Jak provést UPDATE Pass-Through Query v SQL Server

  2. Jak optimalizovat použití klauzule OR při použití s ​​parametry (SQL Server 2008)

  3. mysql - smazal jsem tabulku uživatelů! jak to mohu obnovit?

  4. mysql kontrola řazení tabulky