Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann eine Diskrepanz zwischen Variablen und Parametern in vorbereiteten Anweisungen behoben werden?

Wie kann eine Diskrepanz zwischen Variablen und Parametern in vorbereiteten Anweisungen behoben werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-22 12:19:03204Durchsuche

How to Resolve Discrepancy Between Variables and Parameters in Prepared Statements?

bind_param: Diskrepanz zwischen Variablen und Parametern in der vorbereiteten Anweisung

In Ihrem Codeausschnitt tritt ein Fehler auf: „Anzahl der Variablen stimmt nicht mit der Zahl überein.“ der Parameter in der vorbereiteten Anweisung. Dies weist auf eine Nichtübereinstimmung zwischen den Variablen in Ihrer bind_param()-Funktion und den Platzhaltern (?) in Ihrer vorbereiteten Anweisung hin.

Um dieses Problem zu beheben, stellen Sie sicher, dass Ihre vorbereitete Anweisung alle Variablen korrekt durch Fragezeichen ersetzt. Entfernen Sie die Anführungszeichen um Fragezeichen, wie im korrigierten Code unten zu sehen ist:

$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 Anzahl der Fragezeichen sollte immer mit der Anzahl der an bind_param() übergebenen Variablen übereinstimmen. In Ihrem ursprünglichen Code gab es zwei Variablen ($year, $make), aber nur ein Fragezeichen in der vorbereiteten Anweisung, was zu dem Fehler führte.

Stellen Sie außerdem sicher, dass die Datentypen der Variablen mit den Daten übereinstimmen Typen der Datenbankspalten. Wenn beispielsweise die Jahresspalte in der Datenbank eine Ganzzahl ist, sollte $year vor der Bindung in eine Ganzzahl umgewandelt werden.

Das obige ist der detaillierte Inhalt vonWie kann eine Diskrepanz zwischen Variablen und Parametern 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