2013-11-22 41 views
1

我在Yii框架查詢,我要轉換爲查詢生成器的代碼mysql_fetch_assoc和查詢生成器mysql_num_rows在警予

部分:

 $sql ="SELECT * FROM `mosqueculturalliablee` WHERE `email` ='$this->username'"; 
     $query = mysql_query($sql,$connect); 
     if ($query === FALSE) { 
      trigger_error(mysql_error()); 
     } 
     $numrows = mysql_num_rows($query); 
     if ($numrows!=0) 
     { 
      //while loop 
      while ($row = mysql_fetch_assoc($query)){ 
       $email = $row["email"]; 
       $password = $row["password"]; 
      } 

。我把這個前兩行方法:

  $query =Yii::app()->db->createCommand() 
     ->select() 
     ->from('mosqueculturalliablee') 
     ->where("email='" . $this->username."'") 
       ->queryAll(); 

我的問題是mysql_num_rows($query)mysql_fetch_assoc($query)錯誤說$queryarray這是不允許的。

那麼,我怎樣才能將這些轉換爲查詢生成器表達式?

回答

2

queryAll()返回查詢結果的所有行。所以,你可以這樣做:

$query =Yii::app()->db->createCommand() 
     ->select() 
     ->from('mosqueculturalliablee') 
     ->where("email='" . $this->username."'") 
       ->queryAll(); 
$totalRows = count($query); //get returned rows count 

和循環,這樣做:

foreach($query as $row) { 
    ... 
} 
+0

完美。非常感謝。 – user3019375

+0

可能會有一段時間,如果您有太多記錄可以使用。解決方案可能是使用2個查詢,一個用於計數,另一個用於獲取記錄。 http://stackoverflow.com/questions/18675874/yii-queries-not-working/18679817#18679817 – topher

0

我不能評論這是由於較低的代表,但請不要建立這樣的查詢,因爲它們容易受到SQL注入攻擊。以下是正確的方法:

$results=Yii::app()->db->createCommand('SELECT * FROM mosqueculturalliablee WHERE `email`=:email') 
->queryAll(array(
    ':email'=>$this->username, 
)); 
+0

感謝您提供有用的提示,但發生錯誤: – user3019375

+0

但出現錯誤:CDbConnection及其行爲沒有方法或關閉命名爲「createFindCommand」。 – user3019375

+0

對不起,我徒手打字。我只是改變了我應該做的事。 – DaSourcerer