如何在php上进行查询和编码?
我对sql的查询是名字,但是我希望它在php上列出,它按名称以A,B,C等开头,如下所示。
我的代码就像这样运行
$sqlquery = <squery string>
$d=sql(sqlquery)
while(fetch(d))
{
echo data
}
我希望它是如下所示的回音列表
A
阿隆
加速
阿曼
的乙
巴尔特
Balbon
Basty
C
。
。
。
Z
如何在每次开始时都会检查每个新字母,它会在查询运行时首先从首字母开始回信到组?我想在一个查询中执行此操作,因此我不必运行查询来匹配每个起始字母以对它们进行分组。
答案 0 :(得分:2)
您可以做的是运行此查询
请注意,有些人会认为这是错误的,因为您使用SQL格式化HTML代码但是您获得了非常干净的客户端代码
select
UPPER(LEFT(name.name, 1)) "capital"
, GROUP_CONCAT( name.name SEPARATOR '<br />') "name_formatted"
from
name
group by
capital asc
查看此演示http://sqlfiddle.com/#!2/6ec58/8 一个坏处是“使用filesort”,因此最好在数据库中有一个单独的起始资本列
如果您运行该查询并获取它,您将得到一个这样的数组..
$names = array(
'A' => 'Aron<br />Accel<br />Aman'
, 'B' => 'Balter<br />Balbon<br />Basty'
);
什么很容易循环(注意示例循环)
foreach ($names as $capital => $name_formatted) {
echo '<b>' . $capital . '</b>' . '<br />';
echo $name_formatted . '<br />';
}
输出什么
A
Aron
Accel
Aman
B
Balter
Balbon
Basty
答案 1 :(得分:1)
没有什么太复杂了,只需使用类似的东西:
$sqlquery = <squery string>
$d=sql(sqlquery)
$firstletter = '';
while(fetch(d))
{
if (substr(d, 0, 1) !== $firstletter) {
if (!empty($firstletter)) {echo '</div><hr />';}
$firstletter = substr(d, 0, 1);
echo '<div>'.$firstletter;
}
echo d;
}