Warum erhalte ich in MySQLi-vorbereiteten Anweisungen die Fehlermeldung „Anzahl der Bind-Variablen stimmen nicht überein'?

Patricia Arquette
Freigeben: 2024-10-27 19:31:30
Original
644 Leute haben es durchsucht

Why Am I Getting

Anzahl der Bind-Variablen stimmen beim Einfügen vorbereiteter Anweisungen nicht überein

Beim Ausführen einer INSERT-Anweisung mit MySQLi-vorbereiteten Anweisungen kann es sein, dass Benutzer auf den Fehler stoßen: „ Die Anzahl der Bindevariablen stimmt nicht mit der Anzahl der Felder in der vorbereiteten Anweisung überein.“

Dieses Problem tritt auf, wenn die Anzahl der in der bind_param()-Methode bereitgestellten Bindevariablen nicht mit der Anzahl der Platzhalter in der INSERT-Abfrage übereinstimmt . Betrachten Sie zum Beispiel den folgenden Codeausschnitt:

if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) {

  /* Bind parameters s - string, b - blob, i - int, etc */
  $stmt->bind_param("ss", $user, $pw);

  /* Execute it */
  $stmt->execute();

  /* Bind results */
  $stmt->bind_result($user, $pw);

  /* Close statement */
  $stmt->close();
  $userId = $conn->insert_id;
}
Nach dem Login kopieren

In diesem Code hat die INSERT-Anweisung zwei Platzhalter (?): einen für den Benutzer und einen für den Pass. Allerdings bindet die Methode bind_param() zwei Variablen ($user, $pw) an die Platzhalter. Dies führt zu einem Nichtübereinstimmungsfehler.

Die Lösung besteht darin, den Methodenaufruf bind_result() zu entfernen, da die INSERT-Anweisung keine Ergebnisse zurückgibt. Der aktualisierte Code unten fügt Daten korrekt in die Tabelle ein:

if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) {

  /* Bind parameters s - string, b - blob, i - int, etc */
  $stmt->bind_param("ss", $user, $pw);

  /* Execute it */
  $stmt->execute();

  /* Close statement */
  $stmt->close();
  $userId = $conn->insert_id;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in MySQLi-vorbereiteten Anweisungen die Fehlermeldung „Anzahl der Bind-Variablen stimmen nicht überein'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!