2009-09-22 68 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