0

我正在搜索某个词:

$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 可能是“随机的”,我想得到整行,所以在这种情况下
“这是一些随机文本,我想要”

4

2 回答 2

1

假设这些行是换行符分隔的,那么这条看起来很糟糕的 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."%'
";

我不能说我推荐它,我怀疑它会很慢。

于 2012-07-18T17:03:54.157 回答
0

我知道我必须做什么。在查看结果时,我需要另一个循环来将实际行放入 php 变量中。

无论如何,感谢所有答案。

while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $hostname = $row["hostname"]; 
    $config = $row["config"];

            # searching through $config separately with foreach 
}   
于 2012-07-18T16:48:34.080 回答