Heim > Datenbank > MySQL-Tutorial > MySQLi-Bind-Param-Fehler: Warum stimmt meine Anzahl an Typzeichen nicht mit meinen Platzhaltern überein?

MySQLi-Bind-Param-Fehler: Warum stimmt meine Anzahl an Typzeichen nicht mit meinen Platzhaltern überein?

Patricia Arquette
Freigeben: 2024-11-29 10:05:13
Original
357 Leute haben es durchsucht

MySQLi Bind Param Error: Why Does My Number of Type Characters Mismatch My Placeholders?

Bind Param Error: Number Mismatch

In MySQLi-vorbereiteten Anweisungen ist die Anzahl der Typzeichen (z. B. „s“ für String) in der Die bind_param-Methode muss mit der Anzahl der Platzhalter (z. B. „?“) in der SQL übereinstimmen Abfrage.

Problemzusammenfassung

Sie erhalten eine Fehlermeldung, weil der bind_param-Aufruf in Ihrem Code nicht mit der Anzahl der Platzhalter in der vorbereiteten Anweisung übereinstimmt:

$stmt->bind_param("s,s,s,s,s,s,s,...", $project_name, $status, ...);
Nach dem Login kopieren

Dies liegt wahrscheinlich an einer Diskrepanz zwischen der Anzahl der Formulareingaben (65) und der Anzahl der Platzhalter im Abfrage.

Richtiges Format

Das korrekte Format für bind_param ist wie folgt:

$stmt->bind_param("type_characters", $variable1, $variable2, ...);
Nach dem Login kopieren

wobei „type_characters“ eine Zeichenfolge ist, die ein Zeichen enthält pro Platzhalter in der Abfrage, der den Typ der gebundenen Daten angibt.

Zähltyp Zeichen

Um Nichtübereinstimmungen zu vermeiden, wird empfohlen, die Anzahl der Platzhalter manuell oder mithilfe eines regulären Ausdrucks zu zählen. In Ihrem Fall sollten Sie bestätigen, dass die vorbereitete Anweisung 65 Platzhalter enthält.

Beispiel

Für eine modifizierte vorbereitete Anweisung mit 65 Platzhaltern wäre der korrekte bind_param-Aufruf:

$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssss", $project_name, $status, ...);
Nach dem Login kopieren

Tipp

An Um die korrekte Bindung sicherzustellen, sollten Sie die Verwendung der folgenden Methode in Betracht ziehen, die die Anzahl der Platzhalter in einer SQL-Abfrage zählt:

function countPlaceholders($sql) {
  return substr_count($sql, '?');
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonMySQLi-Bind-Param-Fehler: Warum stimmt meine Anzahl an Typzeichen nicht mit meinen Platzhaltern ü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