Sto imparando le corde con DOP.Parametri POS e denominati PDO come parte della stessa query preparata?
Ecco il mio sql (il numero di parametri che possono apparire nel WHERE è variabile).
SELECT
ID, title
FROM
table
WHERE
something = ?
ORDER BY
:sort :dir
LIMIT
:start, :results
Ecco il mio codice:
$query = $conn->prepare($sql);
if ($parameters) {
$i = 0;
foreach ($parameters AS $parameter) {
$i++;
$query->bindParam($i, $parameter);
}
}
$query->bindParam(':start', $pagination['start'], PDO::PARAM_INT);
$query->bindParam(':results', $pagination['results'], PDO::PARAM_INT);
$query->bindParam(':sort', $pagination['sort']);
$query->bindParam(':dir', $pagination['dir']);
$query->execute();
... e qui è l'eccezione che esso genera:
Invalid parameter number: mixed named and positional parameters
E 'impossibile conciliare i parametri posizionali e denominati nella stessa interrogare? O mi sta sfuggendo qualcosa?
Grazie!
Non sono sicuro di 'LIMIT', ma' ORDER BY' non accetta parametri, almeno non nella versione di PHP che sto usando (5.2.9) – jeroen
MySQL non accetterà * valori quotati * per le clausole 'LIMIT' e' ORDER BY', che è ciò che accadrà quando quei segnaposto vengono sostituiti. Non è un problema di PHP ... e tipo di rende la tua domanda discutibile. – Charles