2

变量$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";   
4

4 回答 4

6
$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"; 
于 2012-10-05T01:40:19.073 回答
1
WHERE `title` LIKE '$title%'

使用 LIKE 然后注意 %,它表示 none 或 all,这将返回所有 title 开头为 $title 值的记录

于 2012-10-05T01:55:00.133 回答
0

这应该这样做

$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";  
于 2012-10-05T01:41:30.700 回答
0

首先,你不应该直接将变量插入到 SQL 语句中,除非你可以 100% 确定它是安全的,即你只是在服务器端定义了它并且它不包含用户可以制作/更改的数据。为了安全起见,通常最好不要将任何变量插入到查询中。

其次,由于其他问题已经提供了答案,我将演示一个更安全的版本:

$query = "SELECT * FROM submission WHERE title LIKE '" . mysql_real_escape_string($letter) . "%';";

%在 a 中使用的字符WHERE ... LIKE ...将匹配任意数量的字符,类似于.*在正则表达式中。另请注意,“_”可用于匹配任何单个字符。

于 2012-10-05T02:09:09.470 回答