Shaiful是正確的,你喜歡的語句被錯誤地寫,但我只是想延長到這一點,你必須要小心,在活動記錄or_
條款。在笨這些不使用支架,所以下面是罰款:
$this->db->select('*');
$this->db->like('name', $name);
$this->db->or_like('surname', $surname);
$query = $this->db->get('workers');
它產生:
SELECT * FROM `workers` WHERE `name` LIKE `%$name%` OR `surname` LIKE `%$surname%`;
但如果你在稍後的日期延長查詢,以下將無法正常工作:
$this->db->select('*');
$this->db->where('id', $id);
$this->db->like('name', $name);
$this->db->or_like('surname', $surname);
$query = $this->db->get('workers');
這產生:
SELECT * FROM `workers` WHERE `id`=`$id` AND `name` LIKE `%$name%` OR `surname` LIKE `%$surname%`;
第二個示例的問題是WHERE
子句由於後面的SQL中的OR
而變爲可選。
Codeigniter 3引入了使用括號的功能,如果稍後有可能會使查詢變得更加複雜,我建議採用以下方法。
所以,在我看來,一個更安全的方法使用or_
條款時,應該是:
$query = $this->db->select('*')->from('workers')
->group_start()
->like('name', $name)
->or_like('surname', $surname)
->group_end()
->get();
在當前的例子,雖然,有什麼Shaiful沒有給出任何問題,它是完全笨2兼容。