我在使用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));

08-04 11:11