2015-09-14 40 views
0

因爲我已經給管理員動態創建了表單,所以當他創建表單時,我所做的是我創建了表現在我想顯示錶格和列的報告生成。在那我不想顯示(userlogin,地點,地點)報表生成和三列( user_id,user_common_id,ayear)這三列對於我動態創建的所有表格都很常見。我已經給我的代碼到目前爲止我所做的。我不想在創建我的記錄時在mysql中顯示一些表和一些列

指導我如何爲此編寫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(); 
    ?> 

當管理員創建的形式,這裏是動態表的代碼和columns.for更好的投影

$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); 
+0

將'select *'更改爲'select col1,col2,col3,...',只需選擇所需的列。 – Barmar

+0

此應用程序已運行三年,請參閱我的查詢SHOW COLUMNS FROM $表。明智的報告必須來。對於所有的表格,列名稱與OP的最後三列 –

回答

0

把你想在陣列跳過,然後用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(); 
    ?> 
+0

重複[alert](http://stackoverflow.com/q/32557907/1816093)不同。關閉或刪除了我的,如果你想 – Drew