6

我有两个 MySQL 问题。

$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']) ."'
";

第二个也是最后一个问题。我想为我的网站制作一个搜索引擎,选择stationname包含的所有行$_POST['search']。但是,当我有 2 行时,例如,一个被称为,cheese另一行被称为cheese2,并且我搜索cheese,只cheese被选中,当我搜索时cheese2,只会cheese2被选中。有没有办法同时选择cheesecheese2

4

5 回答 5

17

LIKE支持通配符。 %表示任意数量的字符(包括零),并且_表示任意一个字符`

stationname LIKE 'cheese%'

这将匹配cheesecheese2

您也可以将%用于第一个问题。

stationname LIKE 'a%'

这将找到所有以 开头的单词'a'

于 2012-04-10T16:38:18.103 回答
5

我正在尝试选择所有 stationname 以 $_GET['letter'] 开头的行

MySQL 有一个LEFT似乎是您正在寻找的功能。所以基本上我们提取 the 的第一个字母stationname并将其与您的字母进行比较:

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

有没有办法同时选择奶酪和奶酪2?

好吧,这里的解决方案有点臭,因为您应该检查是否cheese包含在cheese2以及是否cheese2包含在cheese. 试试这个:

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
    ";

对于您的第二个查询:

$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 回答