我使用预准备语句访问我的数据库的某些行,但是当我指定限制标记时遇到错误 - 我不确定原因。
这是在我的模型中:
public function returnData() {
$this->limit = 10;
$r = $this->db->select("SELECT id,userid,dateTime,rating,description FROM table where userid = :userid ORDER BY dateTime ASC LIMIT :limit", array(':userid' => $this->userid, ':limit' => $this->limit));
return $this->_returnData($r);
}
如果我更换,一切都有效:使用下面的数字限制,但我不确定为什么我不能在这里使用准备好的语句 - 我想知道这是否与某个数字上的引号有关,但我无法解决。
ORDER BY dateTime ASC LIMIT 10", array(':userid' => $this->userid));
它访问以下功能:
/*
*Select
*@param string $sql - An SQL string
*@param array $array - An array of parameters to bind. Default is empty array
*@param constant $fetchMode - A PDO fetchmode. Default is fetch_assoc
*return mixed
*/
public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC) {
$sth = $this->prepare($sql);
foreach ($array as $key => $value) {
$sth->bindValue("$key", $value);
}
$sth->execute();
$this->rowCount = $sth->rowCount();
return $sth->fetchAll($fetchMode);
}
答案 0 :(得分:0)
对于限制,您必须在绑定时将值作为整数传递:
foreach ($array as $key => $value) {
if($value == (int)$value)
$sth->bindValue("$key", $value, PDO::PARAM_INT);
else
$sth->bindValue("$key", $value);
}