sql >> Base de Datos >  >> RDS >> Mysql

Número de parámetro no válido:parámetro no definido Insertando datos

Solo para proporcionar una respuesta, ya que este error es bastante común, aquí hay algunas causas:

1) El :parameter el nombre no coincide con el enlace por error (¿error tipográfico?). Esto es lo que pasó aquí. Tiene :alias en la instrucción SQL, pero vinculado :username . Entonces, cuando se intentó vincular el parámetro, Yii/PDO no pudo encontrar :username en la declaración sql, lo que significa que era "un parámetro corto" y arrojó un error.

2) Olvidarse por completo de agregar el bindValue() para un parámetro. Esto es más fácil de hacer en Yii otras construcciones como $critera , donde tiene una matriz o parámetros ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test) ).

3) Conflictos extraños con la paginación y/o clasificación de CDataProvider cuando se usan together y joins . No hay una manera específica y fácil de caracterizar esto, pero cuando uso consultas complejas en CDataProviders, he tenido problemas extraños con la caída de parámetros y este error.

Una forma muy útil de solucionar estos problemas en Yii es habilitar el registro de parámetros en su archivo de configuración. Agregue esto a su db matriz en su archivo de configuración:

'enableParamLogging'=>true,

Y asegúrese de que CWebLogRoute la ruta está configurada en su log sección. Esto imprimirá la consulta que generó el error y todos los parámetros que intentaba enlazar. ¡Muy útil!