Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示分组查询的完整行_Php_Mysql - Fatal编程技术网

Php 显示分组查询的完整行

Php 显示分组查询的完整行,php,mysql,Php,Mysql,我有一个MySQL数据库,里面有名字和处方。我要做的是遍历属于特定名称的所有处方并在表中显示它们,然后创建一个新表,其中包含下一个名称和一组新处方 使用“分组依据”时,我能够显示患者的姓名以及每组的第一个表格行。但是我不知道如何从组中的sub_字段填充行。我尝试过使用GROUP\u CONCAT,它允许我以逗号分隔的方式显示组中列的所有行,但我仍然需要像下面这样填充子行中的所有数据: 名称1: -START1_1 -(完) -药物 START1_2 (完) 药物1_2 START1_3 (完)

我有一个MySQL数据库,里面有名字和处方。我要做的是遍历属于特定名称的所有处方并在表中显示它们,然后创建一个新表,其中包含下一个名称和一组新处方

使用“分组依据”时,我能够显示患者的姓名以及每组的第一个表格行。但是我不知道如何从组中的sub_字段填充行。我尝试过使用
GROUP\u CONCAT
,它允许我以逗号分隔的方式显示组中列的所有行,但我仍然需要像下面这样填充子行中的所有数据:

名称1: -START1_1 -(完) -药物

  • START1_2
  • (完)
  • 药物1_2

  • START1_3

  • (完)
  • 药物1_3
名称2: -START2_1 -(完) -药物2_1

  • START2_2
  • (完)
  • 药物2_2

  • START2_3

  • (完)
  • 药物2_3
我尝试了以下代码,使用GROUPBY,也尝试了Group_CONCAT,但我不知道如何处理输出

$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子句是没有意义的。此外,千万不要使用evil
SELECT*
——这只会增加混乱

然后在循环中使用此查询生成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