PDO查询不使用参数数组

时间:2017-09-12 14:12:41

标签: php mysql pdo

我有一个方法getRows,用于从参数$query$params的数据库中提取多行。这是:

public function getRows($query, $params = [])
{
    try {
        $stmt = $this->conn->prepare($query);
        $stmt->execute($params);
        return $stmt->fetchAll();
    } catch (PDOException $ex) {
        throw new Exception($ex->getMessage());
    }
}

当我像这样使用它时:

$this->db->getRows("SELECT * FROM news ORDER BY id DESC LIMIT $startFrom, $perPage")

一切都很好,工作正常。但是,当我将$startFrom$perPage传递给方法的$params数组时,事情会变得毛茸茸。我开始收到错误。

有问题的查询:

$this->db->getRows("SELECT * FROM news ORDER BY id DESC LIMIT ?, ?", [$startFrom, $perPage]);

返回以下错误:

  

致命错误:未捕获的异常' PDOException' with message' SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在' 45',' 5'''在第1行'在D:\ xampp \ htdocs \ MVC \ App \ Core \ Database.php:50堆栈跟踪:#0 D:\ xampp \ htdocs \ MVC \ App \ Core \ Database.php(50):PDOStatement-> execute(数组)#1 D:\ xampp \ htdocs \ MVC \ App \ Models \ News \ NewsRepository.php(28):App \ Core \ Database-> getRows(' SELECT * FROM n ...&#39 ;,数组)#2 D:\ xampp \ htdocs \ MVC \ App \ Controllers \ news.php(24):App \ Models \ News \ NewsRepository-> index(' 10',5)# 3 [内部功能]:新闻 - >索引()#4 D:\ xampp \ htdocs \ MVC \ App \ Core \ App.php(35):call_user_func_array(Array,Array)#5 D:\ xampp \ htdocs \ MVC \ App \ init.php(28):App \ Core \ App-> __ construct()#6 D:\ xampp \ htdocs \ MVC \ Public \ index.php(3):require_once(' D: \ xampp \ htdocs ...')在第50行的D:\ xampp \ htdocs \ MVC \ App \ Core \ Database.php中抛出#7 {main}

我尝试使用谷歌搜索问题,我发现如果数组将整数变成字符串,但是我通过var_dumping检查$stmt befoce执行并且数组中的键是整数,所以我不要以为这就是原因。任何人都知道为什么会这样吗?为什么我的值中添加了单引号,例如''45', '5''

0 个答案:

没有答案