変数$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 を使用し、% に注意してください。これは、なしまたはすべてを意味します。これにより、タイトルが $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";
まず、変数が安全であることを 100% 確信できない限り、変数を SQL ステートメントに直接補間しないでください。つまり、サーバー側で定義したばかりで、ユーザーが作成/変更した可能性のあるデータが含まれていません。多くの場合、安全のために、変数をクエリに補間しないことが最善です。
次に、他の質問で答えが得られたので、より安全なバージョンのデモを行います。
$query = "SELECT * FROM submission WHERE title LIKE '" . mysql_real_escape_string($letter) . "%';";
%
で使用される文字は、正規表現WHERE ... LIKE ...
と同様に、任意の数の文字に一致します。.*
また、「_」は任意の 1 文字に一致させるために使用できることに注意してください。