2009-09-22 66 views
5

我試圖讓一個PHP字符串分解成單個的字,在數據庫中搜索它們,然後將結果添加到另一個數據庫..分手爆炸和foreach串

我目前擁有的字符串這樣

「SDGCC,ARISE,SDGFS」

我想在登錄標籤表來搜索喜歡這些詞標記我使用這個

SELECT * FROM logintags WHERE tag LIKE「%字符串%」

,使每個標籤從我所用爆炸和foreach,但它似乎並沒有越來越預期的效果嘗試了串取。

$ string = $ _POST ['tags'];

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

的foreach($標籤爲$鍵){

$查詢=請求mysql_query( 「SELECT * FROM dept_logintags WHERE tag LIKE '%」 $鍵 「%。'」); $ r = mysql _fetch _object($ query);

$插入=請求mysql_query( 「INSERT INTO briefings_logintagsidbriefing_idlogintag_id)VALUES(NULL, '$ ID', '」 「)」 $ R-> ID。');

}

我想創建的效果是每個標籤創建標籤ID和簡報ID之間的參考...

但是它似乎只待放數據庫中有一個正確的條目。

回答

3

如果原始字符串中的逗號後有空格,那麼explode()將返回類似[「SDGCC」,「ARISE」,「SDGFS」]的內容。

這將導致您的LIKE子句僅匹配第一個單詞。嘗試使用trim():

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

編輯:正如Artelius提到的,總是轉義用戶提交的數據以防止SQL注入。

24

嘗試

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

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

我的猜測是,你得到一個空間之前起身SDGFS。

另外,請確保你總是escape strings正確地把它們放入MySQL查詢!否則,有人可能會將受感染的輸入發送到您的服務器,並對數據庫造成嚴重破壞。 (這被稱爲SQL injection。)

+0

應該是被接受的答案。 – Sandhu 2016-05-20 07:50:33

-6

請爲互聯網的愛,自己不建立一個SQL查詢。使用PDO