我有一个方法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''