由于某种原因,此查询无效。
<p align="center">
<?php
$result1 = mysql_query("SELECT name FROM comics GROUP BY name ORDER BY name ASC");
while ($row = mysql_fetch_array($result1))
{
?>
<a href="?sort=<?php echo substr($row['name'], 0, 1); ?>"><?php echo substr($row['name'], 0, 1); ?></a>
<?php } ?>
</p>
输出
2 2 3 A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A V V V V Z
而不是通过名称进行分组,然后通过第一个字母将其分解,只显示一个字母,然后显示所有字母。
任何帮助?
答案 0 :(得分:2)
您在SQL中使用全名来分组;比你在PHP中迭代结果并只显示第一个字母;当然,如果你的表包含例如。
ABC 阿德 AFG
GROUP BY名称将全部返回;并且只显示第一个字母将打印“A”三次。
如果您只想检索可以尝试的第一个字母
SELECT
LEFT( name, 1 ) AS fl
FROM
...
GROUP BY
fl
答案 1 :(得分:2)
你的查询工作正常。您询问了所有漫画的所有名称,并按名称升序对其进行了分组。问题是你只想将漫画名称的第一个字母分组。
SELECT LEFT(`name`,1) AS 'part'
FROM `comics`
GROUP BY LEFT(`name`,1)
ORDER BY LEFT(`name`,1) ASC;
在php中,echo $row['part'];
答案 2 :(得分:0)
SELECT SUBSTRING(name,1)as name
FROM comics GROUP BY 1 ORDER BY 1 ASC
答案 3 :(得分:0)
您在数据库中有多少个不同的名称。您正在对返回的结果执行子字符串,以便在返回一组名称时使用,例如:
adam
andy
abraham
alfie
你最终会得到
a
a
a
a
使用
SELECT distinct(name) FROM comics ORDER BY name ASC
将以升序数字顺序返回唯一名称。