Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nie podano danych dla parametrów w przygotowanym zestawieniu

Związałeś tylko cztery argumenty ciągiem kontrolnym „sssd”, ale masz wiele parametrów. Podczas wiązania zmiennych z mysqli, potrzebujesz jednego znaku dla każdego parametru, na przykład:

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

(Zakładam, że senior i student są liczbami całkowitymi i potrzebuję kodu „d”).

Nie musisz traktować żadnej ze swoich zmiennych za pomocą mysqli_real_escape_string() -- to jest sens używania parametrów. Jeśli wykonasz również ucieczkę, otrzymasz dosłowne znaki ukośnika odwrotnego w swoich danych w bazie danych.

I nigdy nie musisz używać htmlspecialchars() w żadnym przypadku - użyjesz tego podczas wysyłania do HTML, a nie podczas wstawiania do bazy danych. Otrzymasz sekwencje dosłowne, takie jak & w Twoich danych w bazie danych.

Powróć do następnego błędu:

Jest to spowodowane przez:

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

Ta funkcja oczekuje, że drugi argument będzie ciągiem, nowym zapytaniem SQL. Ale już przygotowałeś to zapytanie, więc potrzebujesz następujących informacji:

$result = mysqli_stmt_execute($stmt);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL uwzględniające wielkość liter

  2. Jak przekonwertować PDO do mysqli?

  3. PHP 5.4 PDO nie mogło połączyć się z MySQL 4.1+ przy użyciu starego niezabezpieczonego uwierzytelniania

  4. Presto odpowiednik MySQL group_concat

  5. Masowe wstawianie do MYSQL z plików XML