Php MySQL-在文本字段中搜索一个单词,显示整行?
我在搜索某个词:Php MySQL-在文本字段中搜索一个单词,显示整行?,php,mysql,Php,Mysql,我在搜索某个词: $sql = "select a, b from lala where dudu=1 and b LIKE \"%".$str."%\""; 这个很好用。现在我想显示找到$str的整行,或者更多行。 我该怎么做 本例中的“b”是文本类型的列,包含100多行。 例如: This is some random text, I want to perform a search on it. It has only three lines. 我的$str可以是“随机的”,我想得到
$sql = "select a, b from lala where dudu=1 and b LIKE \"%".$str."%\"";
这个很好用。现在我想显示找到$str的整行,或者更多行。
我该怎么做
本例中的“b”是文本类型的列,包含100多行。例如:
This is some random text, I want
to perform a search on it.
It has only three lines.
我的$str可以是“随机的”,我想得到整行,所以在这种情况下“这是一些随机文本,我想”我知道我必须做什么。在查看结果时,我需要另一个循环来将实际行转换为php变量 谢谢你的回答
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$hostname = $row["hostname"];
$config = $row["config"];
# searching through $config separately with foreach
}
这个看起来很可怕的SQL将得到第一行,上面出现了
$search
,假设这些行是新行分隔的:
$search = 'random'; // Sanitize me!
$sql = "
SELECT a,
SUBSTR(
b,
IF(
LOCATE('\n', REVERSE(b), LENGTH(b) - LOCATE('".$search."', b)) > 0,
LENGTH(b) - LOCATE('\n', REVERSE(b), LENGTH(b) - LOCATE('".$search."', b)),
1
),
IF(
LOCATE('\n', b, LOCATE('".$search."', b)) > 0,
LOCATE('\n', b, LOCATE('".$search."', b)) - IF(
LOCATE('\n', REVERSE(b), LENGTH(b) - LOCATE('".$search."', b)) > 0,
LENGTH(b) - LOCATE('\n', REVERSE(b), LENGTH(b) - LOCATE('".$search."', b)),
1
),
LENGTH(b)
)
) AS line
FROM lala
WHERE
dudu = 1
AND b LIKE '%".$search."%'
";
虽然我不能说我推荐它,但我怀疑它会很慢。你能为我们定义“行”吗?你是说循环搜索结果并显示查询返回的信息吗?谢谢你的回答,不过我认为我找到了一个更好的解决方案。