Heim  >  Artikel  >  Backend-Entwicklung  >  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“?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 19:31:30645Durchsuche

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;
}

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;
}

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!

Stellungnahme:
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