Xử lý lỗi tìm kiếm trong MYSQL

Không biết các bạn đã bao giờ gặp phải vấn đề lỗi tìm kiếm trong MYSQL chưa. Vấn đề thế này : Ví dụ : Trong cơ sở dữ liệu bạn có các chữ : " ống dây cáp,cuộc sống,...". Khi bạn Search với từ khóa : "ỐNG day cáp" hay cuỘc sỐng thì bạn không nhận được kết quả nào cả.

Qua tìm hiểu mình thấy rằng các phiên bản MYSQL 4.xxx không nhận dạng được một số ký tự unicode chữ hoa hay chữ thường.( Các phiên bản mới hơn thì mình cũng ko biết có bị lỗi vậy ko ).

Để giải quyết vấn đề này mình đã viết ra hai hàm sau mong rằng sẽ có ích cho các bạn

#Function Fillter to Search

function toUpper ($text) {
$lower = array(
'á','à','ả','ã','ạ','â','ấ','ầ','ậ','ẩ','ẫ','ă','ắ','ằ','ặ','ẵ','ẳ','ê','ế','ề','ệ','ể','ễ',
'ô','ố','ồ','ộ','ổ','ỗ','ơ','ớ','ờ','ợ','ỡ','ở','ư','ứ','ừ','ự','ữ','ử','ị','ì','í','ĩ','ỉ',
'ý','ỳ','ỵ','ỷ','ỹ','ù','ú','ụ','ũ','ủ'
);

$upper=array(
'Á','À','Ả','Ã','Ạ','Â','Ấ','Ầ','Ậ','Ẩ','Ẫ','Ă','Ắ','Ằ','Ặ','Ẵ','Ẳ','Ê','Ế','Ề','Ệ','Ể','Ễ',
'Ô','Ố','Ồ','Ộ','Ổ','Ỗ','Ơ','Ớ','Ờ','Ợ','Ỡ','Ở','Ư','Ứ','Ừ','Ự','Ữ','Ử','Ị','Ì','Í','Ĩ','Ỉ',
'Ý','Ỳ','Ỵ','Ỷ','Ỹ','Ù','Ú','Ụ','Ũ','Ủ'
);

$text = str_replace($lower, $upper,$text);
return strToUpper($text);
}

function toLower ($text) {
$lower = array(
'á','à','ả','ã','ạ','â','ấ','ầ','ậ','ẩ','ẫ','ă','ắ','ằ','ặ','ẵ','ẳ','ê','ế','ề','ệ','ể','ễ',
'ô','ố','ồ','ộ','ổ','ỗ','ơ','ớ','ờ','ợ','ỡ','ở','ư','ứ','ừ','ự','ữ','ử','ị','ì','í','ĩ','ỉ',
'ý','ỳ','ỵ','ỷ','ỹ','ù','ú','ụ','ũ','ủ'
);

$upper=array(
'Á','À','Ả','Ã','Ạ','Â','Ấ','Ầ','Ậ','Ẩ','Ẫ','Ă','Ắ','Ằ','Ặ','Ẵ','Ẳ','Ê','Ế','Ề','Ệ','Ể','Ễ',
'Ô','Ố','Ồ','Ộ','Ổ','Ỗ','Ơ','Ớ','Ờ','Ợ','Ỡ','Ở','Ư','Ứ','Ừ','Ự','Ữ','Ử','Ị','Ì','Í','Ĩ','Ỉ',
'Ý','Ỳ','Ỵ','Ỷ','Ỹ','Ù','Ú','Ụ','Ũ','Ủ'
);

$text = str_replace($upper,$lower, $text);
return strToLower($text);
}

Hai hàm ở trên dùng để convert tất cả chữ hoa sang chữ thường hoặc chữ thường sang chữ hoa.

Để giải quyết vấn đề trên mình đã làm như sau:


$key_lower=toLower($_POST["keyword"]);
$key_upper=toUpper($_POST["keyword"]);

khi truy vấn mình chỉ cần so sánh với 2 key trên

$sql="SELECT * FROM tbl_content WHERE content LIKE '%$key_lower%' OR content LIKE '%$key_upper%'";

Với cách này vấn đề của mình đã được giải quyết.Nếu bạn nào có cách hay hơn thì post lên cho mọi người cùng tham khảo nhé

Tin khác:
  • Code Chống Save As - Chuột Phải
  • Hàm lấy kích thước thật của ảnh
  • Tạo một trang Web bằng việc sử dụng các mẫu thiết kế Web
  • Tận dựng mẫu có sẵn - Tạo các mẫu để xây dựng trang web của bạn
  • Một trình xây dựng website có phải là sự lựa chọn của bạn không?
Mr.Hung
Mr.Cong

Tìm kiếm
Bài viết mới
Chủ đề quan tâm