我有两个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
会被选中。有没有办法同时选择cheese
和cheese2
?
LIKE
支持通配符。 %
表示任意数量的字符(包括零),_
表示任何一个字符"
stationname LIKE 'cheese%'
这将匹配cheese
和cheese2
.
您也可以将%
用于第一期。
stationname LIKE 'a%'
这将找到所有以 'a'
开头的单词。
我正在尝试选择站名以 $_GET['字母'] 开头的所有行
MySQL有一个LEFT
功能,它似乎是你正在寻找的。所以基本上我们提取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, '%')";
为
第二名。
$query = " SELECT
stationname
FROM
stations
WHERE
stationname
LIKE
'". mysql_real_escape_string($_POST['search']) ."%'
";
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']) ."%'
";
FOR Tel Number
5 发现第一个字符
$Sql="SELECT * FROM customers WHERE TEL REGEXP '^[5]' LIMIT 0,500";