首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FetchAll返回空数组

FetchAll返回空数组
EN

Stack Overflow用户
提问于 2014-03-11 11:42:02
回答 1查看 1K关注 0票数 1

当我试图执行以下代码时,我一直收到一个空数组:

代码语言:javascript
复制
$this->DB->prepare('SELECT * FROM Articles WHERE Author = :username AND Timestamp < :timestamp ORDER BY Timestamp DESC LIMIT :limit;');
$this->DB->bind(':username', $username);
$this->DB->bind(':timestamp', $start);
$this->DB->bind(':limit', $numberOfResults, \PDO::PARAM_INT);
$data = $this->DB->execute();

这些是bindprepareexecute函数:

代码语言:javascript
复制
public function bind($placeholder, $value, $type = \PDO::PARAM_STR) {

    $this->preparedQuery->bindParam($placeholder, $value, $type);
}

public function prepare($query) {

    if(!$this->preparedQuery = $this->connection->prepare($query)) {

        print_r($this->connection->errorInfo());
        die();
    }
}

public function execute() {

    if(!$this->preparedQuery->execute()) {

        print_r($this->preparedQuery->errorInfo());
        die();
    }

    return $this->preparedQuery->fetchAll(\PDO::FETCH_ASSOC);
}

我还尝试过在MySQL Workbench中手动执行查询,它非常有效。

编辑:

这就是查询的样子:

代码语言:javascript
复制
SELECT * FROM Articles WHERE Author = "TestUser" AND Timestamp < "9000-12-31 23:59:59" ORDER BY Timestamp DESC LIMIT 10;

编辑2:

我刚刚发现,如果删除有关Timestamp的条件,查询将正确返回值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-12 19:06:48

我终于想出了解决办法。

多亏了编辑2,我才意识到,就像我90%的错误一样,这是一个愚蠢的错误。

即使在代码中正确地在函数声明中初始化,$start变量实际上也是空的。这导致将一个空字符串传递给bindParam()函数。

个人评论:我是个白痴。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22324694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档