返回包含php字符串中文本的sql记录

返回包含php字符串中文本的sql记录,php,mysql,Php,Mysql,因此,有人回答了我的问题,即如果sql数据库包含字符串中的任何文本,则从该数据库中获取记录。无论我的字符串是否包含逗号,它都可以正常工作,sql数据库中的每条记录也是如此 有没有办法跳过数据库中的逗号,只检查逗号前后的单词 例如: $tags = "rock,pop,indie,alternitive rock, drum and bass"; $tags = explode(' ', $tags); $tags = implode("%' OR `tags` LIKE '%", $tags);

因此,有人回答了我的问题,即如果sql数据库包含字符串中的任何文本,则从该数据库中获取记录。无论我的字符串是否包含逗号,它都可以正常工作,sql数据库中的每条记录也是如此

有没有办法跳过数据库中的逗号,只检查逗号前后的单词

例如:

$tags = "rock,pop,indie,alternitive rock, drum and bass";
$tags = explode(' ', $tags);
$tags = implode("%' OR `tags` LIKE '%", $tags);
$thetags = explode(' ', $thetags);
$result1 = mysql_query("SELECT * FROM `Stations` WHERE `tags` LIKE '%$tags%'" );
我只希望它检查记录并返回逗号内的文本结果。就像我现在搜索记录一样,它会返回所有结果,因为它们都包含逗号/空格

希望这是有意义的。
杰米

如果我理解正确,你可以通过做一些小改动来实现:

<?php
$tags = "rock,pop,indie,alternitive rock,drum and bass";
$tags = addslashes($tags);
$tags_array = explode(',', $tags);
$tags_search = implode("%' OR `tags` LIKE '%", $tags_array);
$tags_query = "SELECT * FROM `Stations` WHERE `tags` LIKE '%".$tags_search."%'";
?>

如果DB中的站点每个站点只有一个流派标记,那么您可以使用MYSQL in子句,如下所示。我刚刚使用str_replace()在标记列表周围添加了单引号,以便为IN子句做好准备

$tags = "rock,pop,indie,alternitive rock, drum and bass"; // from your post

$list = "'" . str_replace(",", "','", $tags) . "'";  // add single quotes to tags

$sql = "SELECT * FROM `Stations` WHERE `tags` IN (".$list.")";  // build query

$result1 = mysql_query($sql);

相关人员:嗨,谢谢你的帮助。我有一个非常奇怪的问题,虽然它似乎工作,但对于一些标签,它返回0结果。是这样吗$tags=“电子、住宅、舞蹈、电子、科技”$list=“””。str_替换(“,”,“,”,“,”,$tags)。"'"; $result1=mysql_query(“SELECT*FROM
Stations
WHERE
tags
IN(“.$list”)”)$num_rows1=mysql_num_rows($result1);echo$num_行1;在我看来,它应该返回18条记录。Jamie如果看不到数据,很难判断发生了什么。每个记录都有一个标签吗?也许可以尝试删除标记列表末尾的逗号。我们能在网上看到什么吗?