อัลกอริทึม sql ค้นหาข้อมูล

ไม่มีอะไรมากครับ อยากแชร์ คิดถึงสมัยที่ตอนเขียนโปรแกรมใหม่ เวลาค้นหาข้อมูล ก็จะใช้แบบดิบๆเลยตามตัวอย่าง sql

SELECT * FROM TB WHERE cond like %query%

โค้ดทำงานถูกต้อง แต่มันไม่ครอบคลุม เช่นผมหาคำว่า aaa bbb แต่ในฐานผมมีแค่ aa
ดังนั้นจึงต้องปรับปรุงโค้ดใหม่

$sql = "SELECT * FROM TB WHERE "


$implode = array();

$words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $query)));

foreach ($words as $word) {

$implode[] = "LCASE(cond) LIKE '%" . $word . "%'";
}

if ($implode) {
$sql .= " " . implode(" OR ", $implode) . "";
}
mysql_query($sql);

หลักการก็คือแยกข้อมูลออกมาเป็นอาเรย์ แล้วค่อยจับมา like กัน แล้วก็จับมา OR กันอีกที เท่านี้ก็ได้โค้ดค้นหาข้อมูลที่แม่นยำยิ่งขึ้นแล้วครับ

Don't be shellfish...Share on FacebookTweet about this on TwitterShare on Google+Digg thisPin on PinterestShare on Reddit

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *

คุณอาจจะใช้ป้ายกำกับและคุณสมบัติHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>