Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ungültige Parameternummer:Parameter wurde nicht definiert Daten einfügen

Nur um eine Antwort zu geben - da dieser Fehler ziemlich häufig vorkommt - sind hier einige Ursachen:

1) Der :parameter Name stimmt aus Versehen nicht mit der Bindung überein (Tippfehler?). Das ist hier passiert. Er hat :alias in der SQL-Anweisung, aber gebunden :username . Als also die Parameterbindung versucht wurde, konnte Yii/PDO :username nicht finden in der SQL-Anweisung, was bedeutet, dass es "ein Parameter zu kurz" war und einen Fehler ausgegeben hat.

2) Völlig vergessen, den bindValue() hinzuzufügen für einen Parameter. Dies ist einfacher in Yii anderen Konstrukten wie $critera , wo Sie ein Array oder Parameter haben ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test) ).

3) Seltsame Konflikte mit der CDataProvider-Paginierung und/oder -Sortierung, wenn together verwendet wird und joins . Es gibt keinen spezifischen, einfachen Weg, dies zu charakterisieren, aber bei der Verwendung komplexer Abfragen in CDataProviders hatte ich seltsame Probleme mit Parametern, die gelöscht wurden und dieser Fehler auftrat.

Eine sehr hilfreiche Möglichkeit, diese Probleme in Yii zu beheben, besteht darin, die Parameterprotokollierung zu aktivieren in deiner Konfigurationsdatei. Fügen Sie dies zu Ihrer db hinzu array in Ihrer Konfigurationsdatei:

'enableParamLogging'=>true,

Und stellen Sie sicher, dass CWebLogRoute Route wird in Ihrem log eingerichtet Sektion. Dadurch wird die Abfrage ausgegeben, die einen Fehler ausgegeben hat, und alle Parameter, die versucht wurden, zu binden. Super hilfreich!