The*_*hew 5 php mysql select sql-like
你好再次Stackoverflow!2 MySQL问题.
$query = " SELECT
stationname
FROM
stations
WHERE
stationname >= '". mysql_real_escape_string($_GET['letter']) ."'
ORDER BY
stationname
";
Run Code Online (Sandbox Code Playgroud)
Firstoff,这是第一个查询.在URL中是$_GET['letter']
包含字母字符的参数集.我正在尝试选择所有stationname
开头的行$_GET['letter']
.所以我在其他Stackoverflow主题中找到了这个解决方案,但它似乎不起作用,我得到了所有的行,而不仅仅是那一行.编辑:似乎它检查所有的字符stationname
,而不仅仅是起始字母,我怎么能得到它?
$query = " SELECT
stationname
FROM
stations
WHERE
stationname
LIKE
'". mysql_real_escape_string($_POST['search']) ."'
";
Run Code Online (Sandbox Code Playgroud)
第二个也是最后一个问 我想为我的网站制作一个搜索引擎,选择stationname
包含的所有行$_POST['search']
.但是当我有2行时,例如cheese
一个被调用而另一个被调用cheese2
,我搜索cheese
,只有cheese
被选中,当我搜索时cheese2
,只会cheese2
被选中.有没有办法选择cheese
和cheese2
?
Roc*_*mat 16
LIKE
支持通配符. %
表示任意数量的字符(包括零),_
表示任何一个字符
stationname LIKE 'cheese%'
Run Code Online (Sandbox Code Playgroud)
这将匹配cheese
和cheese2
.
您也可以使用%
第一个问题.
stationname LIKE 'a%'
Run Code Online (Sandbox Code Playgroud)
这将找到所有开头的单词'a'
.
我试图选择所有以 $_GET['letter'] 开头的行
MySQL 有一个LEFT
函数,它似乎是您正在寻找的。所以基本上我们提取的第一个字母stationname
并将其与您的字母进行比较:
where left(stationname, 1) = '" . mysql_real_escape_string($_GET['letter']) . "'";
Run Code Online (Sandbox Code Playgroud)
有没有办法同时选择奶酪和奶酪2?
那么这里的解决方案有点臭,因为您应该检查是否cheese
包含在cheese2
以及是否cheese2
包含在cheese
. 尝试这个:
where stationname like '%" . mysql_real_escape_string($_POST['search']) .
"%' OR '" . mysql_real_escape_string($_POST['search']) .
"' like concat('%', stationname, '%')";
Run Code Online (Sandbox Code Playgroud)