„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum erhalte ich in MySQLi-vorbereiteten Anweisungen die Fehlermeldung „Anzahl der Bind-Variablen stimmen nicht überein“?

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

Veröffentlicht am 31.10.2024
Durchsuche:569

Why Am I Getting \

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

Beim Ausführen einer INSERT-Anweisung mit vorbereiteten MySQLi-Anweisungen kann bei Benutzern der Fehler auftreten: „ 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 beispielsweise 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;
}

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;
}
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3