Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann das Problem „Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter überein“ in mysqli_bind_param() behoben werden?

Wie kann das Problem „Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter überein“ in mysqli_bind_param() behoben werden?

Susan Sarandon
Susan SarandonOriginal
2024-10-22 12:46:02468Durchsuche

How to Troubleshoot

Verstehen des Fehlers „Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter überein“ in mysqli_bind_param()

Bei Verwendung vorbereiteter Anweisungen mit MySQLs mysqli Bei der Erweiterung ist es wichtig sicherzustellen, dass die Bindung der Parameter mit der vorbereiteten Abfragesyntax übereinstimmt. Andernfalls kann es zu einem Fehler wie „Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter in der vorbereiteten Anweisung überein“ kommen.

Lassen Sie uns tiefer in das bereitgestellte Code-Snippet eintauchen, um das Problem zu identifizieren:

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types 
    WHERE year = ? AND make = '?' ORDER by model");

$stmt->bind_param('is', $year, $make);

$stmt->execute();

Der Fehler tritt auf, weil die vorbereitete Anweisung einen in Anführungszeichen eingeschlossenen Platzhalter für den Make-Wert enthält: „?‘“. In einer vorbereiteten Anweisung werden Fragezeichen als Platzhalter für Werte verwendet, die später gebunden werden. Wenn sie jedoch in Anführungszeichen gesetzt werden, werden sie als wörtlicher Text und nicht als Platzhalter behandelt.

Korrigieren der vorbereiteten Erklärung

Um das Problem zu beheben, entfernen Sie die umgebenden Anführungszeichen Die ? Platzhalter für make in der vorbereiteten Anweisung:

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types 
    WHERE year = ? AND make = ? ORDER by model");

$stmt->bind_param('is', $year, $make);

$stmt->execute();

Die vorbereitete Anweisung hat nun einen ? Platzhalter für jede Variable, jedes Jahr und jede Marke.

Wichtige Punkte, die Sie beachten sollten

  • In einer vorbereiteten Erklärung sind Fragezeichen Platzhalter für Werte.
  • Platzhalter nicht in Anführungszeichen setzen.
  • Die Anzahl der Platzhalter in der vorbereiteten Anweisung muss der Anzahl der Variablen entsprechen, die Sie mit bind_param() binden.

Das obige ist der detaillierte Inhalt vonWie kann das Problem „Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter überein“ in mysqli_bind_param() behoben werden?. 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