bind_param Die Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter in der vorbereiteten Anweisung überein

Lesezeit: 1 Minute

Benutzer-Avatar
TMorgan

Hier ist ein Ausschnitt aus meinem Code:

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

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

$stmt->execute();

Wenn ich die Werte für $year und $make ausgebe, sehe ich Werte, aber wenn ich dieses Skript ausführe, erhalte ich einen Nullwert und die folgende Warnung wird in meiner Protokolldatei angezeigt:

PHP-Warnung: mysqli_stmt::bind_param(): Die Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter in der vorbereiteten Anweisung überein

In diesem Fall befindet sich das Jahr in der Datenbank in Typ int(10), und ich habe versucht, eine Kopie zu übergeben, die als int umgewandelt wurde, und make ist ein varchar(20) mit der Codierung utf8_unicode_ci. Übersehe ich etwas?

Benutzer-Avatar
Runspired

Ihre vorbereitete Aussage ist falsch, sie sollte lauten:

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

Wenn Sie eine Anweisung vorbereiten, müssen Sie jede Variable durch ein Fragezeichen ohne Anführungszeichen ersetzen. Ein Fragezeichen innerhalb von Anführungszeichen wird nicht als Platzhalter erkannt.

Die Anzahl der Fragezeichen muss gleich der Anzahl der Variablen in sein bind_param()

1015120cookie-checkbind_param Die Anzahl der Variablen stimmt nicht mit der Anzahl der Parameter in der vorbereiteten Anweisung überein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy