2012-09-28 47 views
1

我製作了一個名爲「Customer」的表格,我想製作一個簡單的Yii創建和查看應用程序。下面是CustomerController.php一塊我的代碼:如何解決Yii中的錯誤CDbException?

class CustomerController extends Controller 
{ 

    public $layout = '//layouts/column2'; 

    public function actionCreate() 
    { 

     $model = new Customer(); 

     $this->redirect(array('view', 'id' => $model->id)); 

     $this->render('create', array(
      'model' => $model, 
     )); 
    } 

    public function actionView() 
    { 

     $model = new Customer(); 

     $result = $model->viewCustomer(); 

     foreach ($result as $row) { 

      echo $row["title"]; 
      echo $row["fname"]; 
      echo $row["lname"]; 
      echo $row["addressline"]; 
      echo $row["town"]; 
      echo $row["zipcode"]; 
      echo $row["phone"]; 
     } 

     $this->render('view', array(
      'model' => $this->$model(), 
     )); 
    } 
} 

,這裏是我的一個名爲Customer.php

public function createCustomer() 
{ 
    $connection = Yii::app()->db; 
    $sql = "INSERT INTO Customer (title,fname,lname,addressline,town,zipcode,phone)VALUES(:title,:fname,:lname,:addressline,:town,:zipcode,:phone)"; 
    $command = $connection->createCommand($sql); 
    $command->bindParam(":title", $title, PDO::PARAM_STR); 
    $command->bindParam(":fname", $fname, PDO::PARAM_STR); 
    $command->bindParam(":lname", $lname, PDO::PARAM_STR); 
    $command->bindParam(":addressline", $addressline, PDO::PARAM_STR); 
    $command->bindParam(":town", $town, PDO::PARAM_STR); 
    $command->bindParam(":zipcode", $zipcode, PDO::PARAM_STR); 
    $command->bindParam(":phone", $phone, PDO::PARAM_STR); 
    $result = $command->execute(); 

    if ($result == 1) { 
     return "ok"; 
    } 

    public function viewCustomer() 
    { 
     $connection = Yii::app()->db; 
     $sql = "Select * from Customer"; 
     $dataReader = $connection->createCommand($sql)->query(); 
     $dataReader->bindColumn(1, $title); 
     $dataReader->bindColumn(2, $fname); 
     $dataReader->bindColumn(3, $lname); 
     $dataReader->bindColumn(4, $addressline); 
     $dataReader->bindColumn(5, $town); 
     $dataReader->bindColumn(6, $zipcode); 
     $dataReader->bindColumn(7, $phone); 
     $result = $dataReader->queryAll(); 
     return $result; 
    } 

} 

模型的代碼,但,我總是有這樣那樣的錯誤:

CDbException CDbCommand未能執行SQL語句:CDbCommand未能準備SQL語句:SQLSTATE [HY000]:一般錯誤:1沒有這樣的表:Customer。執行的SQL語句是:從客戶選擇*。

我的朋友說我沒有得到價值。我該如何解決這個問題?請幫助我們。先謝謝你。順便說一下,我正在使用PDO。

+1

你確定你的表名是** Customer **或** customer **。大寫小寫 – SuVeRa

回答

0

我認爲你是編程中缺乏oops概念的新手。首先嚐試理解哎呀的概念,比你能夠輕鬆理解Yii。

現在,我無法測試您的代碼,但可能會提供給您建議。

你的控制器::

class CustomerController extends Controller 
{ 

    public $layout='//layouts/column2'; 

    public function actionCreate() 
    { 

     $model = new Customer(); 

     $model = $model->find(); 

     if($model->id) 
      $this->redirect(array('view','id'=>$model->id)); 

     $this->render('create',array(
      'model'=>$model, 
     )); 

    } 

    public function actionView() 
    { 

    $model = new Customer(); 

    $result = $model->viewCustomer();  

    foreach ($result as $row) { 

     echo $row["title"]; 
     echo $row["fname"]; 
     echo $row["lname"]; 
     echo $row["addressline"]; 
     echo $row["town"]; 
     echo $row["zipcode"]; 
     echo $row["phone"]; 
    } 

    $this->render('view',array(
     'model'=>$model, 
    )); 
    } 
}. 

模型::

public function createCustomer() 
{ 

    $connection = Yii::app()->db; 

    $sql = "INSERT INTO Customer (title,fname,lname,addressline,town,zipcode,phone)VALUES(:title,:fname,:lname,:addressline,:town,:zipcode,:phone)"; 

    $command = $connection->createCommand($sql); 

    $command->bindParam(":title",$this->title,PDO::PARAM_STR); 

    $command->bindParam(":fname",$this->fname,PDO::PARAM_STR); 

    $command->bindParam(":lname",$this->lname,PDO::PARAM_STR); 

    $command->bindParam(":addressline",$this->addressline,PDO::PARAM_STR); 

    $command->bindParam(":town",$this->town,PDO::PARAM_STR); 

    $command->bindParam(":zipcode",$this->zipcode,PDO::PARAM_STR); 

    $command->bindParam(":phone",$this->phone,PDO::PARAM_STR); 

    $result = $command->execute(); 

    if ($result == 1){ 

     return "ok"; 

    } 
} 

公共職能viewCustomer(){

$connection = Yii::app()->db; 

    $sql = "Select * from Customer"; 

    $dataReader = $connection->createCommand($sql)->query(); 

    $dataReader->bindColumn(1,$this->title); 

    $dataReader->bindColumn(2,$this->fname); 

    $dataReader->bindColumn(3,$this->lname); 

    $dataReader->bindColumn(4,$this->addressline); 

    $dataReader->bindColumn(5,$this->town); 

    $dataReader->bindColumn(6,$this->zipcode); 

    $dataReader->bindColumn(7,$this->phone); 

    $result = $dataReader->queryAll(); 

    return $result; 

    } 

我希望我在你的代碼的改變也會。 如果您嘗試使用CDbCriteria獲取您的記錄& CActiveRecord的save()函數以將記錄保存到數據庫中,那將是最好的。

相關問題