我在使用Codeigniter将数据从控制器传递到模型时遇到问题。我在浏览器控制台上收到一个内部服务器错误,但已将其缩小到上述问题。
这是我的代码:
控制器
public function get_results() {
$numOfDraws = $this->input->post('numOfDraws');
$data = $this->lotto_model->get_results($numOfDraws);
echo json_encode($data);
}
模型
public function get_results($numOfDraws)
{
$query = $this->db->query('SELECT * FROM lotto ORDER BY id DESC LIMIT "$numOfDraws"');
return $query->result();
}
如果我硬编码
LIMIT
查询成功工作。我知道$numOfDraws
等于控制器中的正确值。有人能建议吗?
最佳答案
首先,变量注入字符串只适用于双引号,而不适用于单引号。其次,您当前的代码对SQL注入是开放的。
CodeIgniter提供了防止这种情况发生的功能:
$query = $this->db->query('SELECT * FROM lotto ORDER BY id DESC LIMIT ?', array($numOfDraws));