2016-01-02 4 views
0

Я хочу найти роль пользователя для соответствующего идентификатора и электронной почты зарегистрированного пользователя. Ниже мой wbuser классYii queryScalar() с запросами mysql?

Я получаю следующее сообщение об ошибке

Error 500 
CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens 

здесь мой код

<?php 

class WebUser extends CWebUser { 
    public $role; 
    public $role2; 

    public function getRole2() { 
     if ($this->role2 === null) { 
      // Here you need to get User role 
      $this->role2 = Yii::app()->db->createCommand("SELECT email FROM {{students}} WHERE id=:id AND role=1")->queryScalar(array(':id' => Yii::app()->user->id)); 
     } 

     return $this->role2; 
    } 
    public function getRole(){ 
     if ($this->role === null) { 
      // Here you need to get User role 
      $this->role = Yii::app()->db->createCommand("SELECT role FROM {{students}} WHERE id=:id AND email=':email'")->queryScalar(array(':id' => Yii::app()->user->id,':email' => $this->role2,)); 
     } 
     return $this->role; 
    } 
} 
+0

Удалить отдельные кавычки вокруг ': email' – Stalinko

ответ

1

Попробуйте этот путь

$this->role2 = Yii::app()->db->createCommand() 
->select('email') 
->from('{{students}}') 
->where('id=:id AND role=1', array(':id'=>$id)); 
->queryScalar(); 

и для второго запроса попробовать

$this->role2 = Yii::app()->db->createCommand() 
->select('role') 
->from('{{students}}') 
->where('id=:id AND email=:email', array(':id'=>$id, ':email'=> $this->role2)); 
->queryScalar(); 
+0

Я хочу получить функцию электронной почты getRole2 и найти роль с помощью функции getRole для сопоставления электронной почты с функцией getRole2. вы можете проверить и рассказать, что не так на моей второй функции getRole –

+0

У меня есть ответ – scaisEdge

+0

im получение синтаксической ошибки, неожиданной '{' error for -> from ({{students}}) эта строка –

Смежные вопросы