所以有人回答了我关于从sql数据库中获取记录的问题,如果它包含字符串中的任何文本。它运行正常,我的字符串如何包含逗号,我的sql db中的每条记录也是如此。
有没有办法跳过数据库中的逗号,只检查逗号之前/之后的单词?
例如:
$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%'" );
我只希望它检查记录并在逗号中返回文本的结果。好像我现在搜索记录一样,它返回每个结果,因为它们都包含一个逗号/空格。
希望这是有道理的。 杰米
答案 0 :(得分:0)
如果我理解正确,你可以通过做一些小改动来实现它:
<?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."%'";
?>
explode(',',$tags)
基于逗号分隔,而不是空格。rock, drum
中的空格。addslashes
来提高您的安全性。答案 1 :(得分:0)
如果数据库中的电台每个电台只有一个类型标签,您可以使用如下的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);