变量$letter
是英文字母。
如何WHERE
在下面的查询中放置一个子句,以便它只返回title
以与变量相同的字母开头的结果$letter
?
$letter = $_GET['letter'];
$query2 = "select title, COUNT(*) as titlerows from submission
GROUP BY title
order by title asc
LIMIT $offset, $rowsperpage";
$query2 = "select title, COUNT(*) as titlerows from submission WHERE title LIKE '$letter%'
GROUP BY title
order by title asc
LIMIT $offset, $rowsperpage";
编辑:
$letter = mysql_real_escape_string($_REQUEST['letter']);
$query2 = "SELECT `title`, COUNT(*) as `titlerows` from `submission`
WHERE `title` LIKE '".$letter."%'
GROUP BY `title` ASC
LIMIT $offset, $rowsperpage";
WHERE `title` LIKE '$title%'
使用 LIKE 然后注意 %,它表示 none 或 all,这将返回所有 title 开头为 $title 值的记录
这应该这样做
$letter = $_GET['letter'];
$query2 = "SELECT title, COUNT(*) AS titlerows FROM submission WHERE title LIKE '$letter%'
GROUP BY title
order by title asc
LIMIT $offset, $rowsperpage";
首先,你不应该直接将变量插入到 SQL 语句中,除非你可以 100% 确定它是安全的,即你只是在服务器端定义了它并且它不包含用户可以制作/更改的数据。为了安全起见,通常最好不要将任何变量插入到查询中。
其次,由于其他问题已经提供了答案,我将演示一个更安全的版本:
$query = "SELECT * FROM submission WHERE title LIKE '" . mysql_real_escape_string($letter) . "%';";
%
在 a 中使用的字符WHERE ... LIKE ...
将匹配任意数量的字符,类似于.*
在正则表达式中。另请注意,“_”可用于匹配任何单个字符。