2009-09-22 24 views
5

Tôi đang cố gắng lấy chuỗi php để chia nhỏ thành các từ riêng lẻ, tìm kiếm chúng trong cơ sở dữ liệu và sau đó thêm kết quả vào cơ sở dữ liệu khác ..chia nhỏ các chuỗi bằng cách phát nổ và tìm kiếm

Tôi hiện có chuỗi như thế này

"SDGCC, PHÁT SINH, SDGFS"

tôi muốn tìm kiếm trong bảng thẻ đăng nhập cho thẻ như những lời này tôi đang sử dụng này

SELECT * FROM logintags WHERE tag LIKE '% string%'

để mỗi thẻ được lấy từ chuỗi tôi đã thử sử dụng phát nổ và bỏ qua nhưng dường như nó không có hiệu quả mong muốn.

$ string = $ _POST ['tags'];

$ tags = explode (',' $ string);

foreach ($ tags như $ key) {

$ query = mysql_query ("SELECT * FROM dept_logintags ĐÂU tag LIKE '%" $ key "%..'"); $ r = mysql _fetch _object ($ query);

$ chèn = mysql_query ("INSERT INTO briefings_logintags (id, briefing_id, logintag_id) VALUES (NULL, '$ id', '" ")" $ r-> id..');

}

tác dụng Tôi đang cố gắng để tạo ra là dành cho mỗi thẻ tạo ra một tài liệu tham khảo giữa id thẻ và id cuộc họp ...

Tuy nhiên có vẻ như chỉ để được đặt một mục nhập chính xác trong cơ sở dữ liệu.

Trả lời

3

Nếu có dấu cách sau dấu phẩy trong chuỗi ban đầu của bạn, thì phát nổ() sẽ trả về một cái gì đó như ["SDGCC", "ARISE", "SDGFS"].

Điều này sẽ khiến mệnh đề LIKE của bạn chỉ khớp với từ đầu tiên. Hãy thử sử dụng trim():

$word=trim($key); 
$safe=mysql_real_escape_string($word); 
$query=mysql_query("SELECT * FROM dept_logintags WHERE tag LIKE '%".$safe."%'"); 

EDIT: Như Artelius đã đề cập, luôn xóa dữ liệu do người dùng gửi để ngăn chặn SQL injection.

24

Hãy thử

$tags = explode(',',$string); 

foreach($tags as $key) {  
    echo '"'.$key.'"<br/>';  
} 

tôi đoán là bạn đang nhận được một không gian trước khi ARISE và SDGFS.

Ngoài ra, hãy đảm bảo bạn luôn luôn escape strings đúng cách trước khi đưa chúng vào truy vấn MySQL !! Nếu không ai đó có thể gửi đầu vào nhiễm độc cho máy chủ của bạn và tàn phá cơ sở dữ liệu của bạn. (Điều này được gọi là SQL injection.)

+0

Phải là câu trả lời được chấp nhận. – Sandhu

-6

Xin vui lòng, vì tình yêu của internet, không tự xây dựng một truy vấn SQL. Sử dụng PDO.

Các vấn đề liên quan