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

Ugyldigt parameternummer:parameter blev ikke defineret Indsætter data

Bare for at give et svar - fordi denne fejl er ret almindelig - her er et par årsager:

1) :parameter navn matcher ikke bindingen ved en fejl (tastefejl?). Det er, hvad der skete her. Han har :alias i SQL-sætningen, men bundet :username . Så da parambindingen blev forsøgt, kunne Yii/PDO ikke finde :username i sql-sætningen, hvilket betyder, at det var "en parameter kort" og gav en fejl.

2) Glemte fuldstændig at tilføje bindValue() for en parameter. Dette er nemmere at gøre i Yii andre konstruktioner som $critera , hvor du har et array eller params ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test) ).

3) Mærkelige konflikter med CDataProvider-sideinddeling og/eller sortering, når du bruger together og joins . Der er ingen specifik, nem måde at karakterisere dette på, men når jeg bruger komplekse forespørgsler i CDataProviders, har jeg haft mærkelige problemer med, at parametre blev slettet, og denne fejl opstod.

En meget nyttig måde at fejlfinde disse problemer på i Yii er at aktivere parameterlogning i din konfigurationsfil. Føj dette til din db array i din konfigurationsfil:

'enableParamLogging'=>true,

Og sørg for, at CWebLogRoute rute er sat op i din log afsnit. Dette vil udskrive forespørgslen, der gav og fejl, og alle de parametre, den forsøgte at binde. Super hjælpsom!



  1. Sådan sammenkædes strenge i SQLite

  2. MySQL "NOT IN" forespørgsel 3 tabeller

  3. PL/SQL, hvordan undslipper man et enkelt citat i en streng?

  4. Enhver måde at vælge uden at forårsage låsning i MySQL?