/ / PDO: Ungültige Parameternummer: Die Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein - mysql, pdo, parameters

PDO: Ungültige Parameternummer: Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein - mysql, pdo, parameters

Ich kann nicht herausfinden, warum ich das bekomme SQLSTATE [HY093]: Ungültige Parameternummer: Die Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein Fehlermeldung mit folgendem Code:

$myArr = array(283908,283951,284024,284064,284076,284099);
$num = count($myArr);

$req = "select * from MyTable where Id in (?,?,?,?,?,?) limit ?,?";

$start = 0;
$limit = 3;

try {
$sql = $pdo->prepare($req);
$sql->bindParam($num+1, $start, PDO::PARAM_INT);
$sql->bindParam($num+2, $limit, PDO::PARAM_INT);
$sql->execute($myArr);
}
catch(PDOException $e) {
pdo_error($e->getMessage());
}

Die ersten 6 Fragezeichen sind mit myArr-Inhalten und die letzten 2 mit Begrenzungen verbunden. Dies ist nur ein Beispiel. In der Praxis kann myArr mehr als 100 Werte enthalten und seine Größe ist nicht festgelegt.

Antworten:

2 für die Antwort № 1

Wenn du anrufst PDOStatement::execute() Bei einem Array von Parametern werden die in Aufrufen von angegebenen Parameter nicht verwendet PDOStatement::bindParam(). Hängen Sie stattdessen einfach das an $start und $limit variabel bis zum Ende von $myArr und Ruf an $sql->execute().

try {
$sql = $pdo->prepare($req);
$myArr[] = $start
$myArr[] = $limit

$sql->execute($myArr);
}

Sehen Dies Kommentar zur PHP PDO Dokumentation.