Solo per fornire una risposta, poiché questo errore è piuttosto comune, ecco alcune cause:
1) Il :parameter
il nome non corrisponde alla rilegatura per errore (errore di battitura?). Questo è quello che è successo qui. Ha :alias
nell'istruzione SQL, ma vincolato a :username
. Quindi, quando è stato tentato il collegamento del parametro, Yii/PDO non è riuscito a trovare :username
nell'istruzione sql, il che significa che era "un parametro corto" e ha generato un errore.
2) Dimenticando completamente di aggiungere il bindValue()
per un parametro. Questo è più facile da fare in Yii altri costrutti come $critera
, dove hai un array o parametri ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test)
).
3) Strani conflitti con l'impaginazione e/o l'ordinamento di CDataProvider quando si utilizza together
e joins
. Non esiste un modo semplice e specifico per caratterizzarlo, ma quando si utilizzano query complesse in CDataProviders ho riscontrato strani problemi con l'eliminazione dei parametri e il verificarsi di questo errore.
Un modo molto utile per risolvere questi problemi in Yii è abilitare la registrazione dei parametri
nel tuo file di configurazione. Aggiungilo al tuo db
array nel tuo file di configurazione:
'enableParamLogging'=>true,
E assicurati che CWebLogRoute
il percorso è impostato nel tuo log
sezione. Questo stamperà la query che ha restituito l'errore e tutti i parametri che stava tentando di associare. Super disponibile!