Codeigniter 2.1.0 เขียนคำสั่งเพื่อเลือกข้อมูล
$this->db->like('ชื่อฟิว','
คำที่ต้องการค้นหา
','none');
ซึ่งผล
ลัพธ์
SQL ของมันที่ควรจะเป็นหลังจากเราเพิ่ม 'none' ต่อท้าย เพื่อไม่ใส่ % คือ
where '
ชื่อฟิว
' like '
คำที่ต้องการค้นหา
'
แต่ผลลัพธ์ที่ได้รับกลับเป็น
where '
ชื่อฟิว
' like '%
คำที่ต้องการค้นหา
%'
ซึ่งมันก็ยังใส่ % มาให้เรา
วิธีแก้ไขปัญหานี้คือ
ไปที่ system->database->DB_active_rec.php
หลังจากเปิดไฟล์ DB_active_rec.php แล้ว ค้นหาคำว่า if ($side == 'before')
อยู่ประมาณบรรทัด 664
เพิ่ม
if ($side === 'none')
{
$like_statement = $prefix." $k $not LIKE '{$v}'";
}
เข้าไปก่อนคำสั่ง
if ($side == 'before')
ก็จะได้ประมาณนี้
if ($side === 'none')
{
$like_statement = $prefix." $k $not LIKE '{$v}'";
}
elseif ($side == 'before')
{
$like_statement = $prefix." $k $not LIKE '%{$v}'";
}
elseif ($side == 'after')
{
$like_statement = $prefix." $k $not LIKE '{$v}%'";
}
else
{
$like_statement = $prefix." $k $not LIKE '%{$v}%'";
}
ที่มา : http://codeigniter.com/forums/viewthread/207134/
ไม่มีความคิดเห็น:
แสดงความคิดเห็น