2017-08-01 112 views
-1

我從字面上剛開始使用CakePHP並正在閱讀文檔。我正在嘗試運行一個簡單的SELECT * FROM qci_departments查詢,但對於它無法設法使它在CakePHP中工作...任何建議都會受到歡迎。CakePHP - MySQL - 選擇查詢和獲取結果

SamplePageController.php

<?php 
namespace App\Controller; 
use App\Controlle\AppController; 
use Cake\Datasource\ConnectionManager; 

use Cake\Core\Configure; 
use Cake\Network\Exception\ForbiddenException; 
use Cake\Network\Exception\NotFoundException; 
use Cake\View\Exception\MissingTemplateException; 


class SamplePageController extends AppController { 

    /* Function for the displaying the content of the sample page */ 
    public function index() { 
     $this->set('PageTitle','Sample Page'); 

     $db = ConnectionManager::get('default'); 
     $result = $db->execute('SELECT * FROM qci_departments')->fetchAll('assoc'); 
    } 
} 

sample_page.ctp

<table class="table table-striped table-hover"> 
    <thead> 
    <tr> 
     <th>One</th> 
     <th>Two</th> 
     <th>Three</th> 
    </tr> 
    </thead> 
    <tbody> 

    <?php 

     foreach ($result as $row) { 
     echo ' 
      <tr> 
      <td>'.$row['ID'].'</td> 
      <td>'.$row['Department'].'</td> 
      <td>'.$row['Positions'].'</td> 
     </tr>'; 
     } 
    ?> 

    </tdbody> 
</table> 

我明白,有防止所有形式的東西,如代碼注入CakePHP的語法,而且還有正規PHP語法似乎需要額外的安全和安全預防措施。我的問題是:

  1. 爲什麼上面的查詢/獲取不工作?
  2. 我應該遵循哪種語法? CakePHP還是普通的PHP?

謝謝 A2K

編輯: 爲了澄清,我收到的錯誤是:

  • 未定義的變量:結果[APP /模板/頁/ sample_page.ctp,線 105]爲foreach提供的無效參數() [APP/Template/Pages/sample_page.ctp,line 105]

回答

0

您需要設置從控制變量則不僅可以使用,鑑於:

public function index() { 
    $this->set('PageTitle','Sample Page'); 

    $db = ConnectionManager::get('default'); 
    $result = $db->execute('SELECT * FROM qci_departments')->fetchAll('assoc'); 
    $this->set(['result'=>$result]); // set variable for view 
    // or $this->set(compact('result')); 
} 

而且你需要有視野內的SamplePage文件夾。在那裏製作index.ctp文件,並將sample_page.ctp中的所有代碼複製到View/SamplePage/index.ctp。

如果您使用的是CakePhp,那麼請使用框架的約定,這會使事情變得簡單。你可以通過CakePhp blog tutorial

+0

謝謝,但這不起作用。 '未定義的變量:結果'錯誤依然存在,似乎'$ result'變量永遠不會讓它進入視圖,無論我如何設置它。數據庫連接正在工作,並被稱爲「默認」,真的不知道問題可能是什麼。 – Armitage2k

+0

哦,我明白了。你仍然缺少基本約定,請參閱最新的答案。 –

+0

也不起作用。 CakePHP會拋出一個錯誤,告訴我在'/ src/Template/Pages/sample_page.ctp'中創建.ctp文件...到目前爲止,所有其他網站也都位於該文件夾中。 – Armitage2k