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 に答える