Mysql
 sql >> Database >  >> RDS >> Mysql

Numero parametro non valido:parametro non definito Inserimento dati

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!