我的相册按ID排序,现在我只想显示专辑B字母。
我的旧查询
$valueql_select="SELECT DISTINCT (i.gallery_album_id) FROM mov_gallery_album AS a, mov_gallery_images AS i WHERE a.gallery_album_id = i.gallery_album_id AND a.gallery_cat_id =".$_GET['cat']." ORDER BY gallery_id desc";
我尝试使用LIKE
$valueql_select="SELECT DISTINCT (i.gallery_album_id) FROM mov_gallery_album AS a, mov_gallery_images AS i WHERE a.gallery_album_id = i.gallery_album_id AND a.gallery_cat_id =".$_GET['cat']." ORDER BY name LIKE 'b%'";
但上述查询不起作用。
答案 0 :(得分:1)
将条件放在WHERE子句中:
$valueql_select="SELECT DISTINCT i.gallery_album_id
FROM mov_gallery_album AS a
JOIN mov_gallery_images AS i
ON a.gallery_album_id = i.gallery_album_id
WHERE a.gallery_cat_id = '42'
AND name LIKE 'b%'
ORDER BY name";
此外,您还有SQL注入漏洞。 不将值连接到SQL字符串中。特别是当它们直接来自用户输入而没有任何验证时。
相关强>
答案 1 :(得分:0)
如果您需要对以B
开头的名称进行排序,请首先尝试:
ORDER BY
CASE WHEN name name LIKE 'b%' THEN 0 ELSE 1 END, name ;
如果您希望获得以B
开头的名称,则必须将LIKE
谓词移动到WHERE
子句,如下所示:
WHERE a.gallery_album_id = i.gallery_album_id
AND a.gallery_cat_id =".$_GET['cat']."
AND name LIKE 'b%'
ORDER BY name