Table 在筛选结果时打印多列 headers
Table prints multiple column headers while filtering results
如何在筛选结果后阻止 table 打印多列 headers?示例如下所示
我的代码
function fillQueryData() {
$dbName = $_REQUEST ['db'];
$link = mysqli_connect ( '192.168.2.113', 'root', '', $dbName );
if (! $link) {
die ( "Connection failed" . mysqli_errno ( $link ) );
}
if (isset ( $_POST ['name'] )) {
$name = trim ( $_POST ['name'] );
$tblName = $_REQUEST ['tbl'];
$colqry = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbName' AND TABLE_NAME = '$tblName'";
$col_names = mysqli_query ( $link, $colqry );
while ( $col = mysqli_fetch_array ( $col_names, MYSQLI_ASSOC ) ) {
$colName = $col ['COLUMN_NAME'];
$tblQry = "SELECT * FROM $tblName WHERE $colName='$name' LIMIT 15";
$query2 = mysqli_query ( $link, $tblQry );
echo "<table><tr>";
$i = 0;
while ( $i < mysqli_num_fields ( $query2 ) ) {
$meta = mysqli_fetch_field_direct ( $query2, $i );
echo "<th>" . $meta->name . "</th>";
$i = $i + 1;
}
echo "</tr>";
$i = 0;
while ( $row = mysqli_fetch_row ( $query2 ) ) {
echo "<tr>";
$count = count ( $row );
$y = 0;
while ( $y < $count ) {
$c_row = current ( $row );
echo "<td>" . $c_row . "</td>";
next ( $row );
$y = $y + 1;
}
echo "</tr>";
$i = $i + 1;
}
echo "</table>";
} }
}
我不想将 table 数据 while 循环放在我的列名 while 循环中,但如果我不这样做,我将不会在行中得到任何结果。我该如何解决这个问题,以便只显示过滤后的结果??
列 header 循环应该在 data-fetch 循环之外
代码应该是这样的。
function filterTblData() {
$dbName = $_REQUEST ['db'];
$link = mysqli_connect ( '192.168.2.113', 'root', '', $dbName );
if (! $link) {
die ( "Connection failed" . mysqli_errno ( $link ) );
}
if (isset ( $_POST ['name'] )) {
$name = trim ( $_POST ['name'] );
$tblName = $_REQUEST ['tbl'];
// Dynamically select the column names of the chosen table.
$colqry = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbName' AND TABLE_NAME = '$tblName'";
$col_names = mysqli_query ( $link, $colqry );
$col = mysqli_fetch_array ( $col_names, MYSQLI_ASSOC );
$colName = $col ['COLUMN_NAME'];
// Selecting and filtering results based on matching search terms.
$tblQry = "SELECT * FROM $tblName WHERE $colName='$name' LIMIT 15";
$query2 = mysqli_query ( $link, $tblQry );
echo "<table><tr>";
// Loop for fetching table column headers and riprinting them.
$i = 0;
while ( $i < mysqli_num_fields ( $query2 ) ) {
$meta = mysqli_fetch_field_direct ( $query2, $i );
echo "<th>" . $meta->name . "</th>";
$i = $i + 1;
}
echo "</tr>";
// Fetch row data and populate
while ( $col = mysqli_fetch_array ( $col_names, MYSQLI_ASSOC ) ) {
$colName = $col ['COLUMN_NAME'];
// Selecting and filtering results based on matching search terms.
$tblQry = "SELECT * FROM $tblName WHERE $colName='$name' LIMIT 15";
$query2 = mysqli_query ( $link, $tblQry );
$i = 0;
while ( $row = mysqli_fetch_row ( $query2 ) ) {
echo "<tr>";
$count = count ( $row );
$y = 0;
while ( $y < $count ) {
$c_row = current ( $row );
echo "<td>" . $c_row . "</td>";
next ( $row );
$y = $y + 1;
}
echo "</tr>";
$i = $i + 1;
}
}
echo "</table>";
}
}
filterTblData();
如何在筛选结果后阻止 table 打印多列 headers?示例如下所示
我的代码
function fillQueryData() {
$dbName = $_REQUEST ['db'];
$link = mysqli_connect ( '192.168.2.113', 'root', '', $dbName );
if (! $link) {
die ( "Connection failed" . mysqli_errno ( $link ) );
}
if (isset ( $_POST ['name'] )) {
$name = trim ( $_POST ['name'] );
$tblName = $_REQUEST ['tbl'];
$colqry = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbName' AND TABLE_NAME = '$tblName'";
$col_names = mysqli_query ( $link, $colqry );
while ( $col = mysqli_fetch_array ( $col_names, MYSQLI_ASSOC ) ) {
$colName = $col ['COLUMN_NAME'];
$tblQry = "SELECT * FROM $tblName WHERE $colName='$name' LIMIT 15";
$query2 = mysqli_query ( $link, $tblQry );
echo "<table><tr>";
$i = 0;
while ( $i < mysqli_num_fields ( $query2 ) ) {
$meta = mysqli_fetch_field_direct ( $query2, $i );
echo "<th>" . $meta->name . "</th>";
$i = $i + 1;
}
echo "</tr>";
$i = 0;
while ( $row = mysqli_fetch_row ( $query2 ) ) {
echo "<tr>";
$count = count ( $row );
$y = 0;
while ( $y < $count ) {
$c_row = current ( $row );
echo "<td>" . $c_row . "</td>";
next ( $row );
$y = $y + 1;
}
echo "</tr>";
$i = $i + 1;
}
echo "</table>";
} }
}
我不想将 table 数据 while 循环放在我的列名 while 循环中,但如果我不这样做,我将不会在行中得到任何结果。我该如何解决这个问题,以便只显示过滤后的结果??
列 header 循环应该在 data-fetch 循环之外
代码应该是这样的。
function filterTblData() {
$dbName = $_REQUEST ['db'];
$link = mysqli_connect ( '192.168.2.113', 'root', '', $dbName );
if (! $link) {
die ( "Connection failed" . mysqli_errno ( $link ) );
}
if (isset ( $_POST ['name'] )) {
$name = trim ( $_POST ['name'] );
$tblName = $_REQUEST ['tbl'];
// Dynamically select the column names of the chosen table.
$colqry = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbName' AND TABLE_NAME = '$tblName'";
$col_names = mysqli_query ( $link, $colqry );
$col = mysqli_fetch_array ( $col_names, MYSQLI_ASSOC );
$colName = $col ['COLUMN_NAME'];
// Selecting and filtering results based on matching search terms.
$tblQry = "SELECT * FROM $tblName WHERE $colName='$name' LIMIT 15";
$query2 = mysqli_query ( $link, $tblQry );
echo "<table><tr>";
// Loop for fetching table column headers and riprinting them.
$i = 0;
while ( $i < mysqli_num_fields ( $query2 ) ) {
$meta = mysqli_fetch_field_direct ( $query2, $i );
echo "<th>" . $meta->name . "</th>";
$i = $i + 1;
}
echo "</tr>";
// Fetch row data and populate
while ( $col = mysqli_fetch_array ( $col_names, MYSQLI_ASSOC ) ) {
$colName = $col ['COLUMN_NAME'];
// Selecting and filtering results based on matching search terms.
$tblQry = "SELECT * FROM $tblName WHERE $colName='$name' LIMIT 15";
$query2 = mysqli_query ( $link, $tblQry );
$i = 0;
while ( $row = mysqli_fetch_row ( $query2 ) ) {
echo "<tr>";
$count = count ( $row );
$y = 0;
while ( $y < $count ) {
$c_row = current ( $row );
echo "<td>" . $c_row . "</td>";
next ( $row );
$y = $y + 1;
}
echo "</tr>";
$i = $i + 1;
}
}
echo "</table>";
}
}
filterTblData();