Php 在MySQL中连接数据
我的数据库中有以下数据:Php 在MySQL中连接数据,php,mysql,foreach,Php,Mysql,Foreach,我的数据库中有以下数据: initial | word --------------------------- E | Example1 E | Example2 N | Nextexample1 所需输出: 因此,对于每个首字母,它应该显示以该首字母开头的所有单词 此时的输出: 我现在的代码是: 问题是: 我完全理解为什么我得到了错误的输出,但不知道如何解决它。我想我需要像foreach循环中的foreach循环这样
initial | word
---------------------------
E | Example1
E | Example2
N | Nextexample1
所需输出:
因此,对于每个首字母,它应该显示以该首字母开头的所有单词
此时的输出:
我现在的代码是:
问题是:
我完全理解为什么我得到了错误的输出,但不知道如何解决它。我想我需要像foreach循环中的foreach循环这样的东西来获得正确的输出,但是如何将单词链接到正确的首字母?您可以通过一个SQL查询来实现这一点 在这个查询中,您要求MySQL按首字母对记录进行分组,并使用函数将每个分组聚合为一行 使用示例数据 将返回:
您可以通过一个SQL查询来实现这一点 在这个查询中,您要求MySQL按首字母对记录进行分组,并使用函数将每个分组聚合为一行 使用示例数据 将返回:
谢谢,这很有帮助!再问一个问题:如果我决定把每个匹配首字母的单词放在一个单独的div中,你知道我怎么做吗?@Stan显然是通过一个循环,但你可能想问第二个问题-谢谢,这很有帮助!再问一个问题:如果我决定把每个匹配首字母的单词放在一个单独的div中,你知道我怎么做吗?@Stan显然是通过一个循环,但你可能想问第二个问题-
E : Example1, Example2
N : Nextexample1
E : Example1
E : Example2
N : Nextexample1
<?php
$pdo = new PDO('mysql:host=...');
$sql = "SELECT DISTINCT initial, word FROM `exampletable` ORDER by initial ASC";
$stmt = $pdo->prepare($sql);
$stmt->execute();
if($stmtrecords = $stmt->fetchall(PDO::FETCH_ASSOC))
{
foreach($stmtrecords as $result)
{
?>
<?php echo $result['initial'];?> : <?php echo $result['word'];?>
SELECT `initial`, GROUP_CONCAT(`word` SEPARATOR ', ') as `output`
FROM `table` GROUP BY `initial` ORDER BY `initial` ASC
initial | word
--------+--------------
E | Example1
E | Example2
Z | Zebra
N | NextExample
O | OtherExample
O | OtherExample2
initial | output
--------+--------------
E | Example1, Example2
N | NextExample
O | OtherExample, OtherExample2
Z | Zebra