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, ...);
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, ...);
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, ...);
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, '?'); }
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!