我不想在创建我的记录时在mysql中显示一些表和一些列
问题描述:
因为我已经给管理员动态创建了表单,所以当他创建表单时,我所做的是我创建了表现在我想显示表格和列的报告生成。在那我不想显示(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);
答
把你想在阵列跳过,然后用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
将'select *'更改为'select col1,col2,col3,...',只需选择所需的列。 – Barmar
此应用程序已运行三年,请参阅我的查询SHOW COLUMNS FROM $表。明智的报告必须来。对于所有的表格,列名称与OP的最后三列 –