PDO ATTR_EMULATE_PREPARES错误,不呈现视图

时间:2017-07-05 01:32:59

标签: php mysql pdo

我只想用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();
}

我错过了什么?

0 个答案:

没有答案