由于我已经授予管理员动态创建表单的权限,所以当他创建表单时,我要做的就是为该表单动态创建表格。一切正常,现在我想显示用于生成报表的表格和列。因为我不想显示用于生成报告的表(userlogin,place,venue)和三列(user_id,user_common_id,ayear),所以这三列对于我动态创建的所有表都是通用的。到目前为止,我已经给出了我的代码。

指导我如何为此编写mysql查询。

<?php
    $mysqli = new mysqli("localhost", "root", "", "event");
    $result = $mysqli->query("SHOW TABLES");
    while ( $row = $result->fetch_row() )
    {
    $table = $row[0];
    echo '<h3>',$table,'</h3>';
    $result1 = $mysqli->query("SELECT * FROM $table where ayear='1'");
    if($result1)
    {
    echo '<table cellpadding="0" cellspacing="0" class="db-table">';
    $column = $mysqli->query("SHOW COLUMNS FROM $table");
    echo '<tr>';
    while($row3 = $column->fetch_row() )
    {
    echo '<th>'.$row3[0].'</th>';
    }
    echo '</tr>';
    while($row2 = $result1->fetch_row() )
    {
    echo '<tr>';
    foreach($row2 as $key=>$value) {
    echo '<td>',$value,'</td>';
    }
    echo '</tr>';
    }
    echo '</table><br />';
    }
    }
    $mysqli->close();
    ?>


当管理员创建表单时,以下是动态表和列的代码。

$query1="create table ".$porg."(id INT NOT NULL AUTO_INCREMENT,".$VALUES.",user_id int(11),user_common_id int(11),ayear varchar(30),PRIMARY KEY (id)) ENGINE = INNODB";
      $result=mysql_query($query1);

最佳答案

将要跳过的表和列放入数组中,然后在显示名称之前使用in_array()测试名称。

使用fetch_assoc而不是fetch_row,以便在数组键中获得列名。

<?php
    $skip_tables = array('userlogin', 'place', 'venue');
    $skip_columns = array('user_id', 'user_common_id', 'ayear');
    $mysqli = new mysqli("localhost", "root", "", "event");
    $result = $mysqli->query("SHOW TABLES");
    while ( $row = $result->fetch_row() )
    {
      $table = $row[0];
      if (in_array($table, $skip_tables)) {
        continue;
      }
      echo '<h3>',$table,'</h3>';
      $result1 = $mysqli->query("SELECT * FROM $table where ayear='1'");
      if($result1)
      {
        echo '<table cellpadding="0" cellspacing="0" class="db-table">';
        $column = $mysqli->query("SHOW COLUMNS FROM $table");
        echo '<tr>';
        while($row3 = $column->fetch_row() )
        {
          if (!in_array($row3[0], $skip_columns)) {
            echo '<th>'.$row3[0].'</th>';
          }
        }
        echo '</tr>';
        while($row2 = $result1->fetch_assoc() )
        {
          echo '<tr>';
          foreach($row2 as $key=>$value) {
            if (!in_array($key, $skip_columns)) {
              echo '<td>',$value,'</td>';
            }
          }
          echo '</tr>';
        }
        echo '</table><br />';
      }
    }
    $mysqli->close();
    ?>

关于mysql - 我不想在生成记录时在mysql中显示某些表和某些列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32556820/

10-17 03:03