8 มีนาคม 2555

Codeigniter 2.1.0 ใช้งาน SQL SELECT LIKE ออฟชั่น none ไม่ได้

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/
 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น