Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann eine Nichtübereinstimmung der Bindungsparameternummern in vorbereiteten Anweisungen behoben werden?

Wie kann eine Nichtübereinstimmung der Bindungsparameternummern in vorbereiteten Anweisungen behoben werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-22 11:02:29807Durchsuche

How to Resolve Binding Parameter Number Mismatch in Prepared Statements?

"bind_param Number of Variables Doesn't Match Number of Parameters in Prepared Statement"

In Ihrem bereitgestellten Codeausschnitt ist die Warnung, auf die Sie gestoßen sind, auf eine Nichtübereinstimmung zwischen zurückzuführen Anzahl der Variablen in Ihrer bind_param()-Methode und die Anzahl der Parameter in Ihrer vorbereiteten Anweisung. Um dieses Problem zu lösen, muss unbedingt sichergestellt werden, dass diese beiden Zahlen übereinstimmen.

Die vorbereitete Anweisung, die Sie ursprünglich verwendet haben:

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

enthält einen Fehler. Der Platzhalter für den Make-Parameter ist fälschlicherweise in Anführungszeichen („?“) eingeschlossen. In vorbereiteten Anweisungen sollten Platzhalter durch Fragezeichen ohne Anführungszeichen gekennzeichnet werden.

Die korrigierte vorbereitete Anweisung:

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

hat jetzt zwei Platzhalter, die den beiden Variablen in Ihrer bind_param()-Methode entsprechen:

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

Indem Sie die falschen Anführungszeichen um den Make-Platzhalter entfernen, gleichen Sie die Anzahl der Variablen und Parameter an und beheben so den Nichtübereinstimmungsfehler.

Das obige ist der detaillierte Inhalt vonWie kann eine Nichtübereinstimmung der Bindungsparameternummern in vorbereiteten Anweisungen 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