ACTUALIZACIÓN"número de parámetro no válido: parámetro no se define" Insertar datos
que estaba haciendo una pequeña error al enumerar los VALORES. Debería haber puesto ": username" y no ": alias". Supongo que el crédito de respuesta a esta pregunta es libre para cualquiera que lo desee. ¿O borro la pregunta?
ORIGINAL
He estado usando Active Record de Yii por un tiempo. Ahora, mi proyecto necesita acceder a una base de datos diferente para una pequeña transacción. Pensé que el DAO de Yii sería bueno para esto. Sin embargo, estoy recibiendo un error críptico.
CDbCommand no se pudo ejecutar la sentencia SQL: SQLSTATE [HY093]: número de parámetro no válido: parámetro no fue definido
Aquí está mi código:
public function actionConfirmation
{
$model_person = new TempPerson();
$model = $model_person->find('alias=:alias',array(':alias'=>$_GET['alias']));
$connection=Yii::app()->db2;
$sql = "INSERT INTO users (username, password, ssn, surname
, firstname, email, city, country)
VALUES(:alias, :password, :ssn, :surname
, :firstname, :email, :city, :country)";
$command=$connection->createCommand($sql);
$command->bindValue(":username", $model->alias);
$command->bindValue(":password", substr($model->ssn, -4,4));
$command->bindValue(":ssn", $model->ssn);
$command->bindValue(":surname", $model->lastName);
$command->bindValue(":firstname", $model->firstName);
$command->bindValue(":email", $model->email);
$command->bindValue(":city", $model->placeOfBirth);
$command->bindValue(":country", $model->placeOfBirth);
$command->execute();
$this->render('confirmation',array('model'=>$model));
}
Esto construye la siguiente consulta (como se ve en el registro de la aplicación):
INSERT INTO users (username, password, ssn, surname, firstname, email
, city, country)
VALUES(:alias, :password, :ssn, :surname, :firstname, :email, :city, :country);
FYI $model->placeOfBirth
se supone que está en valores de ciudad y condado. Eso no es un error tipográfico (solo una tontería que tengo que hacer).
Good post. Encontré en mi instancia que tenía un espacio después de uno de los nombres de columna y eso fue suficiente para arrojar el error. – salonMonsters
Mi problema era una diéresis en el nombre ': parameter' ... – testing
Una lista de caracteres válidos de marcadores de posición aquí http://stackoverflow.com/questions/5809951/pdo-valid-characters-for-placeholders – maartenmachiels