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 を使用し、% に注意してください。これは、なしまたはすべてを意味します。これにより、タイトルが $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

まず、変数が安全であることを 100% 確信できない限り、変数を SQL ステートメントに直接補間しないでください。つまり、サーバー側で定義したばかりで、ユーザーが作成/変更した可能性のあるデータが含まれていません。多くの場合、安全のために、変数をクエリに補間しないことが最善です。

次に、他の質問で答えが得られたので、より安全なバージョンのデモを行います。

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

%で使用される文字は、正規表現WHERE ... LIKE ...と同様に、任意の数の文字に一致します。.*また、「_」は任意の 1 文字に一致させるために使用できることに注意してください。

于 2012-10-05T02:09:09.470 に答える