在WHERE方法(Codeigniter)中使用SQL语句防止SQL注入

时间:2018-09-06 03:08:13

标签: php codeigniter codeigniter-3

此代码可以防止SQL注入吗?

    $where = "(color = '$color' AND flavor = '$flavor') OR (quality = '$quality' AND price = '$price')";
    $this->db->where($where);
    $result = $this->db->get('fruits');

它基于Codeigniter文档。

  

$ this-> db-> where()接受可选的第三个参数。如果设定   为FALSE,CodeIgniter不会尝试保护您的字段或表   名称。

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

将前面的语句更改为此是正确的吗?

    $where = "(color = '$color' AND flavor = '$flavor') OR (quality = '$quality' AND price = '$price')";
    $this->db->where($where, NULL, TRUE);
    $result = $this->db->get('fruits');

我有点迷茫,还是应该使用它。

    $array = array('color' => $color,
                   'flavor' => $flavor,
                   'quality' => $quality,
                   'price' => $price);
    $where = "(color = ? AND flavor = ?) OR (quality = ? AND price = ?)";
    $this->db->where($where, $array, TRUE);
    $result = $this->db->get('fruits');

1 个答案:

答案 0 :(得分:0)

您必须使用最后一个。在其他查询中无法检测到要“保护”的内容。