由于INT值,在布尔值上调用成员函数fetch()?

时间:2017-06-25 18:26:58

标签: php mysql sql

我有错误 在{$ path}中调用boolean上的成员函数fetch() 当我使用LIMIT $ var或OFFSET $ var时 但如果我要删除'... OFFSET。 $ offset'我不会收到错误。

public static function getConnection(){
    $paramsPath = ROOT.'/config/db_params.php';
    $params = include($paramsPath);

    $dsn = "mysql:host={$params['host']};dbname={$params['dbname']}";
    $db = new PDO($dsn, $params['user'], $params['password']);
    $db->exec("set names utf8");

    return $db;
}
public static function getTask($page = 1){
    $page = intval($page);
    $offset = ($page - 1) * 3;

    $db = Db::getConnection();
    $taskList = [];

    $result = $db->query('SELECT id, user_name, user_email, title, image, tasktext, status FROM task '
            . 'ORDER BY id DESC LIMIT 3 OFFSET'.$offset );
    $i = 0;
    while ($row = $result->fetch()) {
        $taskList[$i]['id'] = $row['id'];
        $taskList[$i]['user_name'] = $row['user_name'];
        $taskList[$i]['user_email'] = $row['user_email'];
        $taskList[$i]['title'] = $row['title'];
        $taskList[$i]['image'] = $row['image'];
        $taskList[$i]['tasktext'] = $row['tasktext'];
        $taskList[$i]['status'] = $row['status'];
        $i++;
    }
    return $taskList;
}

有人可以解释为什么会发生这种情况以及如何解决这个问题?我真的需要一个OFFSET才能进行分页。

1 个答案:

答案 0 :(得分:0)

您的查询格式错误。在数字前面OFFSET之后需要一个空格:

$result = $db->query('SELECT id, user_name, user_email, title, image, tasktext, status FROM task '
        . 'ORDER BY id DESC LIMIT 3 OFFSET '.$offset );