Php 显示分组查询的完整行
我有一个MySQL数据库,里面有名字和处方。我要做的是遍历属于特定名称的所有处方并在表中显示它们,然后创建一个新表,其中包含下一个名称和一组新处方 使用“分组依据”时,我能够显示患者的姓名以及每组的第一个表格行。但是我不知道如何从组中的sub_字段填充行。我尝试过使用Php 显示分组查询的完整行,php,mysql,Php,Mysql,我有一个MySQL数据库,里面有名字和处方。我要做的是遍历属于特定名称的所有处方并在表中显示它们,然后创建一个新表,其中包含下一个名称和一组新处方 使用“分组依据”时,我能够显示患者的姓名以及每组的第一个表格行。但是我不知道如何从组中的sub_字段填充行。我尝试过使用GROUP\u CONCAT,它允许我以逗号分隔的方式显示组中列的所有行,但我仍然需要像下面这样填充子行中的所有数据: 名称1: -START1_1 -(完) -药物 START1_2 (完) 药物1_2 START1_3 (完)
GROUP\u CONCAT
,它允许我以逗号分隔的方式显示组中列的所有行,但我仍然需要像下面这样填充子行中的所有数据:
名称1:
-START1_1
-(完)
-药物
- START1_2
- (完)
- 药物1_2
- START1_3
- (完)
- 药物1_3
- START2_2
- (完)
- 药物2_2
- START2_3
- (完)
- 药物2_3
$med = "SELECT * FROM {$wpdb->prefix}medicin_skema GROUP BY elevnavn";
foreach ($wpdb->get_results($med, ARRAY_A ) as $row) {
echo '<br>'.$row['elevnavn'].' ';
echo '<br>'.$row['start_dato'].' ';
echo '<br>'.$row['slut_dato'].' ';
echo '<br><br>'.$row['drugid'].' ';
}
$med=“通过elevnavn从{$wpdb->prefix}medicin_skema组中选择*”;
foreach($wpdb->get_results($med,ARRAY_A)作为$row){
回显“
”.$row['elevnavn']”;
回显“
”.$row['start_dato']”;
回音“
”.$row['slut_dato'”;
回显“
”.$row['drugid']”;
}
如果我理解正确-您按患者姓名分组-因此每个患者姓名将获得一条记录
暴力方法是选择一组不同的患者姓名;然后按开始日期或/结束日期或您想要的任何合理选项选择他们的每个处方-然后进行创建
本质上是一个子选择(我假设elevnavn是NAME)
您也可以执行插入(从中选择),但您需要先获得正确的子选择,然后使用左连接来获取每个名称的所有记录。您所做的工作非常有效。我最终得出了这样的结论:
$med = "SELECT * FROM {$wpdb->prefix}medicin_skema GROUP BY elevid";
$drugname = '';
$dato = '';
foreach( $wpdb->get_results($med, ARRAY_A) as $medicinskema )
{
$name=$medicinskema['elevid'];
echo '<table class="cpt-table"><tbody>';
echo '<tr><th colspan="3">Elev: ' . $medicinskema['elevid'] . '</th>';
echo '<th colspan="6">CPRnr.: ' . $medicinskema['elevcpr'] . '</th>';
echo '<th colspan="5">Udfyldt: ' . date('d-m-Y', strtotime($medicinskema['time'])) . '</th></tr>';$newquery = "SELECT * from {$wpdb->prefix}medicin_skema where elevid='$name'";
$prescriptions = $wpdb->get_results($newquery, ARRAY_A);
// dumping($prescriptions);
foreach($prescriptions as $prescription)
{
$med=“通过elevid从{$wpdb->prefix}medicin_skema组中选择*”;
$drugname='';
$dato='';
foreach($wpdb->get_results($med,ARRAY_A)作为$medicinskema)
{
$name=$medicinskema['elevid'];
回声';
回音“Elev:”.$medicinskema['elevid']。”;
echo“CPRnr..”.$medicinskema['elevcpr']”;
echo'Udfyldt:'.date('d-m-Y',strotime('medicinskema['time'])。';$newquery=“SELECT*from{$wpdb->prefix}medicin_skema,其中elevid='$name'”;
$prescriptions=$wpdb->get_results($newquery,ARRAY_A);
//倾销(处方);
foreach($处方作为$处方)
{
此查询返回一个无意义(或“不确定”)的结果。在没有任何聚合函数的情况下,包含GROUP BY子句是没有意义的。此外,千万不要使用evilSELECT*
——这只会增加混乱
然后在循环中使用此查询生成n个进一步的查询。这太可笑了!如果需要,只需创建一个带有连接的查询即可
最后,您直接在查询字符串中包含变量。这被认为是不安全和不好的做法。相反,始终使用准备好的和绑定的查询
如果你想进一步帮助构建一个明智而安全的查询,请考虑按以下建议修改你的问题。请注意有3个部分。
对不起-我误解了-你正在尝试为分组查询收集数组结果。函数,当然,我们不能提倡一种不安全的、早就被弃用的API。你能详细说明一下吗。我知道你认为这有点落后,但我不知道如何正确处理它。感谢你的解释,这实际上是很有意义的,尽管我不是一个足够好的程序员,但实际上把你的建议付诸实践。在我写一个修改后的问题之前,我必须读一读你使用的一些概念。再次感谢。你是一个足够好的程序员,可以将上述内容付诸实践。作为一个差劲的程序员,我完全可以保证这是真的$med = "SELECT * FROM {$wpdb->prefix}medicin_skema GROUP BY elevid";
$drugname = '';
$dato = '';
foreach( $wpdb->get_results($med, ARRAY_A) as $medicinskema )
{
$name=$medicinskema['elevid'];
echo '<table class="cpt-table"><tbody>';
echo '<tr><th colspan="3">Elev: ' . $medicinskema['elevid'] . '</th>';
echo '<th colspan="6">CPRnr.: ' . $medicinskema['elevcpr'] . '</th>';
echo '<th colspan="5">Udfyldt: ' . date('d-m-Y', strtotime($medicinskema['time'])) . '</th></tr>';$newquery = "SELECT * from {$wpdb->prefix}medicin_skema where elevid='$name'";
$prescriptions = $wpdb->get_results($newquery, ARRAY_A);
// dumping($prescriptions);
foreach($prescriptions as $prescription)
{
SELECT *
FROM medicin_skema
GROUP
BY elevid