sql >> Databáze >  >> RDS >> Mysql

Neplatné číslo parametru:parametr nebyl definován Vkládání dat

Jen pro poskytnutí odpovědi – protože tato chyba je docela běžná – zde je několik příčin:

1) :parameter jméno omylem neodpovídá vazbě (překlep?). Tohle se tady stalo. Má :alias v příkazu SQL, ale vázaný :username . Takže když došlo k pokusu o vazbu param, Yii/PDO nemohl najít :username v příkazu sql, což znamená, že byl "jeden parametr krátký" a vyvolal chybu.

2) Zcela zapomněli přidat bindValue() pro parametr. To je snazší udělat v jiných konstrukcích Yii, jako je $critera , kde máte pole nebo parametry ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test) ).

3) Zvláštní konflikty s stránkováním a/nebo řazením CDataProvider při použití together a joins . Neexistuje žádný konkrétní a snadný způsob, jak to charakterizovat, ale při použití složitých dotazů v CDataProviders jsem měl podivné problémy s vynecháním parametrů a výskytem této chyby.

Jedním z velmi užitečných způsobů, jak vyřešit tyto problémy v Yii, je povolit protokolování parametrů ve vašem konfiguračním souboru. Přidejte to do vaší db pole ve vašem konfiguračním souboru:

'enableParamLogging'=>true,

A ujistěte se, že CWebLogRoute trasa je nastavena ve vašem log sekce. Tím se vytiskne dotaz, který zadal a chyba, a všechny parametry, které se pokoušel svázat. Super užitečné!



  1. Příklady FROM_UNIXTIME() – MySQL

  2. Obsahuje MS SQL Server hranice rozsahu?

  3. Jak mám předat název tabulky do uloženého procesu?

  4. Oracle:Kombinujte více výsledků v dílčím dotazu do jediné hodnoty oddělené čárkami