Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine vorbereitete MySQL-Anweisung mit dem Fehler „Anzahl der Elemente in der Typdefinitionszeichenfolge stimmt nicht mit der Anzahl der Bindevariablen überein' fehl?

Warum schlägt meine vorbereitete MySQL-Anweisung mit dem Fehler „Anzahl der Elemente in der Typdefinitionszeichenfolge stimmt nicht mit der Anzahl der Bindevariablen überein' fehl?

Barbara Streisand
Freigeben: 2024-11-19 00:16:02
Original
779 Leute haben es durchsucht

Why Does My MySQL Prepared Statement Fail with a

Das Geheimnis der nicht übereinstimmenden Bind-Variablen

Die Frage dreht sich um einen Fehler, der beim Binden von Parametern für eine umfangreiche MySQL-vorbereitete Anweisung auftritt. Das Problem liegt in der Diskrepanz zwischen der Anzahl der Indikatoren vom Typ „s“ in der bind_param-Methode und der Anzahl der Fragezeichen (?) in der Abfragezeichenfolge.

Bind_param() verstehen

bind_param() ist eine MySQLi-Methode, die Fragezeichen (?) in einer vorbereiteten Abfrage durch tatsächliche Daten ersetzt. Jedes Zeichen in der Typdefinitionszeichenfolge (z. B. „s“ für Zeichenfolge) entspricht einem Fragezeichen und den zu bindenden Daten.

Übereinstimmung mit der Anzahl der Bindungsvariablen

Der entscheidende Punkt, den Sie beachten sollten, ist, dass die Anzahl der Zeichen in der Typdefinitionszeichenfolge (z. B. „s,s,s“) genau mit der Anzahl der Fragezeichen (?) in der Abfragezeichenfolge übereinstimmen muss. Beispielsweise erfordert eine Abfrage mit drei Fragezeichen eine Typdefinitionszeichenfolge mit drei „s“-Zeichen.

Untersuchung des Codes

Im angegebenen PHP-Code die Abfrage Die Zeichenfolge enthält 65 Fragezeichen, aber die Methode bind_param() verwendet „s,s,s,s,s,s,s,s“ (insgesamt nur 8 „s“-Zeichen). Diese Diskrepanz führt zur Fehlermeldung: „Anzahl der Elemente in der Typdefinitionszeichenfolge stimmt nicht mit der Anzahl der Bindungsvariablen überein.“

So lösen Sie das Problem:

Zu Um das Problem zu beheben, stellen Sie sicher, dass die Anzahl der „s“-Zeichen in der bind_param()-Methode mit der Anzahl der Fragezeichen (?) in der Abfragezeichenfolge übereinstimmt. In diesem Fall sollte die bind_param()-Methode ersetzt werden durch:

Zusätzliche Hinweise:

  • Zeichen in der Typdefinitionszeichenfolge sollten nicht vorhanden sein Durch Kommas getrennt.
  • Das in der Handbuchseite für mysqli_stmt::bind_param() beschriebene Format sollte sein gefolgt.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine vorbereitete MySQL-Anweisung mit dem Fehler „Anzahl der Elemente in der Typdefinitionszeichenfolge stimmt nicht mit der Anzahl der Bindevariablen überein' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage