sql >> データベース >  >> RDS >> Mysql

無効なパラメータ番号:パラメータが定義されていませんデータの挿入

    答えを提供するためだけに-このエラーはかなり一般的であるため-ここにいくつかの原因があります:

    1):parameter 名前が誤ってバインドと一致しません(タイプミス?)。これがここで起こったことです。彼は:aliasを持っています SQLステートメントで、ただしバインドされた:username 。したがって、paramバインディングが試行されたとき、Yii / PDOは:usernameを見つけることができませんでした sqlステートメントで、「1つのパラメーターが不足している」ことを意味し、エラーをスローしました。

    2)bindValue()を追加するのを完全に忘れている パラメータの場合。これは、$criteraのようなYiiの他の構造で行うのが簡単です。 、ここで配列またはパラメータがあります($criteria->params = array(':bind1'=>'test', ':bind2'=>'test)

    3)togetherを使用すると、CDataProviderのページネーションや並べ替えと奇妙な競合が発生します およびjoins 。これを特徴付ける具体的で簡単な方法はありませんが、CDataProvidersで複雑なクエリを使用すると、パラメーターが削除されてこのエラーが発生するという奇妙な問題が発生しました。

    Yiiでこれらの問題をトラブルシューティングするための非常に役立つ方法の1つは、パラメーターロギングを有効にすることです。 設定ファイルにあります。これをdbに追加します 構成ファイルの配列:

    'enableParamLogging'=>true,
    

    また、CWebLogRouteを確認してください ルートはlogに設定されています セクション。これにより、エラーが発生したクエリと、バインドしようとしたすべてのパラメータが出力されます。とても助かりました!



    1. Puppetを使用したBarmanの自動化:it2ndq / barman(パート1)

    2. Postgresqlは、特定の合計金額に達するまで選択します

    3. SQLServer2012/2014での隠れたパフォーマンスと管理性の向上

    4. アイテムが別のテーブルに存在しないかどうかを確認する