6

MySQL に関する質問が 2 つあります。

$query = "  SELECT
                stationname
            FROM
                stations
            WHERE
                stationname >= '". mysql_real_escape_string($_GET['letter']) ."' 
            ORDER BY
                stationname

";

これが最初のクエリです。URL には$_GET['letter']、アルファベット文字を含むパラメーター セットがあります。stationnameで始まるすべての行を選択しようとしています$_GET['letter']。だから私は他のStackoverflowのトピックでこの解決策を見つけましたが、うまくいかないようです。その単一の行だけでなく、すべての行を取得します。編集:開始文字だけでなく、のすべての文字をチェックしているようstationnameですが、どうすればそれを取得できますか?

$query = "  SELECT
                stationname
            FROM
                stations
            WHERE
                stationname 
            LIKE
                    '". mysql_real_escape_string($_POST['search']) ."'
";

2番目で最後の質問です。を含むすべての行を選択して、自分の Web サイトの検索エンジンを作成したいと考えていstationnameます$_POST['search']。しかし、2 つの行がある場合、たとえばcheese1 つと呼ばれ、もう 1 つが と呼ばれcheese2、検索するcheeseと のみcheeseが選択され、検索するcheese2と のみcheese2が選択されます。と の両方を選択する方法はありますcheesecheese2?

4

5 に答える 5

17

LIKEワイルドカードをサポートします。 %任意の数の文字 (0 を含む) を_意味し、任意の 1 文字を意味します`

stationname LIKE 'cheese%'

これは と に一致cheesecheese2ます。

%創刊号にも使えます。

stationname LIKE 'a%'

これにより、 で始まるすべての単語が検索されます'a'

于 2012-04-10T16:38:18.103 に答える
5

stationname が $_GET['letter'] で始まるすべての行を選択しようとしています

MySQL には、LEFT探していると思われる機能があります。したがって、基本的には の最初の文字を抽出し、stationnameそれをあなたの文字と比較します。

 where left(stationname, 1) = '" . mysql_real_escape_string($_GET['letter']) . "'";

Cheese と Cheese2 の両方を選択する方法はありますか?

が含まれているかどうか、およびcheeseが に含まれているかどうかを確認する必要があるため、ここでは溶液が少し臭いです。これを試して:cheese2cheese2cheese

where stationname like '%" . mysql_real_escape_string($_POST['search']) .
  "%' OR '" . mysql_real_escape_string($_POST['search']) .
  "' like concat('%', stationname, '%')";
于 2012-04-10T16:51:23.343 に答える
3

第二に。

 $query = "   SELECT
                        stationname
                    FROM
                        stations
                    WHERE
                        stationname 
                    LIKE
                        '". mysql_real_escape_string($_POST['search']) ."%'
        ";
于 2012-04-10T16:36:43.210 に答える
1

MySQL のテキスト ワイルドカードは % であるため、最初のクエリでは次のようにする必要があります。

$query = "    SELECT
                    stationname
                FROM
                    stations
                WHERE
                    stationname LIKE '". mysql_real_escape_string($_GET['letter']) ."%' 
                ORDER BY
                    stationname
    ";

2 番目のクエリの場合:

$query = "   SELECT
                    stationname
                FROM
                    stations
                WHERE
                    stationname 
                LIKE
                    '%". mysql_real_escape_string($_POST['search']) ."%'
    ";
于 2012-04-10T16:42:59.460 に答える
0

電話番号

5 は、最初の文字が

$Sql="SELECT * FROM customers WHERE TEL REGEXP '^[5]' LIMIT 0,500";
于 2014-07-23T11:13:13.317 に答える