Php 用explode和foreach分解字符串

Php 用explode和foreach分解字符串,php,mysql,many-to-many,Php,Mysql,Many To Many,我试图将一个php字符串分解为单个单词,在数据库中搜索它们,然后将结果添加到另一个数据库中 我现在有这样的字符串 “SDGCC,起立,SDGFS” 我想在login tags表中搜索像我正在使用的这些词这样的标记 从logintagsWHEREtag中选择*如“%string%” 因此,每个标记都是从我尝试使用explode和foreach的字符串中提取的,但似乎没有达到预期的效果 $string=$_POST['tags'] $tags=分解(“,”$string) foreach($标记为$

我试图将一个php字符串分解为单个单词,在数据库中搜索它们,然后将结果添加到另一个数据库中

我现在有这样的字符串

“SDGCC,起立,SDGFS”

我想在login tags表中搜索像我正在使用的这些词这样的标记

logintags
WHERE
tag
中选择*如“%string%”

因此,每个标记都是从我尝试使用explode和foreach的字符串中提取的,但似乎没有达到预期的效果

$string=$_POST['tags']

$tags=分解(“,”$string)

foreach($标记为$key){

$query=mysql\u query(“从
dept\u logintags
WHERE
tag
中选择*,如“%”“$key.”“%”; $r=mysql\u fetch\u对象($query)

$insert=mysql\u查询(“插入
简报\u登录标签
id
简报\u id
logintag\u id
)值(NULL,$id',“$r->id.”)

}

我试图创建的效果是为每个标记创建标记id和简报id之间的引用


但是,它似乎只在数据库中输入了一个正确的条目。

如果原始字符串中的逗号后面有空格,则explode()将返回类似[“SDGCC”、“rease”、“SDGFS”的内容

这将导致LIKE子句只匹配第一个单词。尝试使用trim():

编辑:正如Artelius提到的,总是转义用户提交的数据以防止SQL注入。

试试看

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

foreach($tags as $key) {    
    echo '"'.$key.'"<br/>';    
}
$tags=explode(',',$string);
foreach($key标记){
回显“.$key.”“
”; }
我的猜测是,在出现和SDGFS之前,您将获得一个空间

另外,在将它们放入MySQL查询之前,请确保始终正确!!否则,有人会将受污染的输入发送到您的服务器,并对您的数据库造成严重破坏。(这称为a。)

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

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