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

时间:2014-05-14 22:11:28

标签: php mysql

所以有人回答了我关于从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%'" );

我只希望它检查记录并在逗号中返回文本的结果。好像我现在搜索记录一样,它返回每个结果,因为它们都包含一个逗号/空格。

希望这是有道理的。 杰米

2 个答案:

答案 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."%'";
?>
  1. 请注意,explode(',',$tags)基于逗号分隔,而不是空格。
  2. 我删除了rock, drum中的空格。
  3. 我重命名了您的变量,因为这可能会让您更容易保持概述。
  4. 我还添加了一个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);