我刚开始使用CakePHP并正在阅读文档。我正在尝试运行一个简单的SELECT * FROM qci_departments
查询但是因为它无法让它在CakePHP中运行...任何建议都会受到欢迎。
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语法,这似乎需要额外的安全和安全预防措施。我的问题是:
谢谢你, A2K
编辑: 为了澄清,我收到的错误是:
答案 0 :(得分: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'));
}
您需要在View中拥有SamplePage文件夹。在那里创建index.ctp文件并将sample_page.ctp中的所有代码复制到View / SamplePage / index.ctp。
如果您正在使用CakePhp,那么请使用框架的约定,这将使事情变得简单。您可以浏览CakePhp blog tutorial。