我只想用PDO和LIMIT进行MySQL查询。当PDO创建所有数字字符串时,我试图将PDO :: ATTR_EMULATE_PREPARES设为false。当我将此错误转换为虚假时,我的应用无法呈现模板,只是内容。在某些情况下,它会呈现第一行内容视图,然后转到模板并返回到内容。以下是几行代码。如果没有该行,我将PDO :: ATTR_EMULATE_PREPARES设置为false,一切正常,但查询为。
我的模型中存储了查询。
**/*.csproj
从某个控制器的这个方法,我从模型中调用方法。
app\models
class ThingsAdmin{
public function getLastThings($number){
return $this->connection->allObjects('select ... limit ?', $typeofobject, array($param1);
}
}
扩展其他控制器的控制器。
app\controllers
$sz = new ThingsAdmin();
public function add($params = null) {
$this->setTemplate('app/teplates/main');
$content = new View('app/views/addsmth');
$lastThings = $this->sz->getLastThings(10);
$content->set('lastThings', $lastThings);
$this->template->set('content', $content->render());
echo $this->template->render();
}
使用渲染方法的库视图。
libs\controller
public $template = null;
public $db = null;
protected function setConnection() {
$options = array(
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
);
$db_init = DB_TYPE . ':host=' . DB_HOST . ';dbname=' . DB_NAME;
try {
$this->db = new PDO($db_init, DB_USER, DB_PASS, $options);
} catch (PDOException $e) {
throw $e;
}
}
protected function setTemplate($template) {
$this->template = new View($template);
}
数据库连接包装器。
libs\View
public function render(){
extract($this->_data);
ob_start();
try {
require_once $this->_file;
}
catch (Exception $e) {
ob_end_clean();
throw $e;
}
return ob_get_clean();
}
我错过了什么?