Vì vậy, tôi có một vấn đề thú vị mà tôi chưa bao giờ gặp phải và dường như không thể tìm thấy nhiều thông tin về việc khắc phục sự cố. Tôi có một cơ sở dữ liệu khổng lồ với một lượng lớn dữ liệu trong đó (10 năm đáng giá), và cố gắng tìm kiếm nó.Vấn đề Truy vấn Mysql sử dụng LIKE và apostrophe
Hiện công cụ tìm kiếm hoạt động tốt, nhưng gần đây, ai đó đã khiến tôi chú ý đến 'lỗi' nếu bạn muốn. Tôi đã cố gắng để bắn nó để có được kết quả mong đợi, nhưng vô ích.
Đây là vấn đề của tôi:
Khi ai đó sử dụng một dấu nháy đơn trong việc tìm kiếm, nó không phải là các lỗi tìm kiếm trên mạng, nhưng nó sẽ trả về không có kết quả. Vì vậy, ví dụ khi tìm kiếm Pete's
truy vấn thực thi nhưng không trả về gì cả. Có, tôi đảm bảo truy vấn có mysql_real_escape_string() sao cho Pete's
trở thành Pete\'s
.
Ngay cả khi tôi cố gắng truy vấn nó bằng tính năng tìm kiếm của phpmysql, tôi nhận được kết quả lạ. Các truy vấn được dự định là như thế này:
SELECT * FROM `smd_article` WHERE `copy` LIKE '%Pete\'s%'
Nhưng khi tôi sử dụng tính năng tìm kiếm trong phpmyadmin, nó mang lại cho tôi:
SELECT * FROM `smd_article` WHERE `copy` LIKE '%Pete''s%'
Và khi tôi thực sự gõ ra các truy vấn trong tab sql, nó vẫn không trả về kết quả nào. Nhưng có một số 17K hồ sơ được trả lại khi tôi chỉ sử dụng Pete và một số hồ sơ 3k khi tôi làm chỉ Petes.
Vì vậy, tôi tò mò về những gì tôi đang làm sai, hoặc thiếu để làm cho nó để nó có thể cho phép các dấu nháy đơn trong một truy vấn bằng cách sử dụng câu lệnh LIKE. Suy nghĩ?
tắt chủ đề, nhưng nó có giá trị biết rằng các truy vấn wildcard như thế này là cách chậm nhất có thể truy vấn Một cơ sở dữ liệu. Tôi có thể không sao cho một cái bàn nhỏ, nhưng nếu bạn có một cái bàn lớn vừa phải, nó thực sự có thể làm chậm mọi thứ. Được cảnh báo. – SDC