I have selected values from a single MySQL table and displayed them in a HTML table many times before using PHP, like this:
$query = "SELECT * FROM main";
$result = $connection->query($query);
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['row1'] . "</td>";
echo "<td>" . $row['row2'] . "</td>";
echo "<td>" . $row['row3'] . "</td>";
echo "<td>" . $row['row4'] . "</td>";
}
How can I display all of the tables in a certain database in the same way? I need it to be dynamic, so that if new tables are added to that database, they will show up on the webpage as well.
This is something I have tried, that doesn't seem to work. Perhaps I can get some feedback?
$query1 = "SHOW TABLES FROM db_name";
// This is equal to the number of tables in the database.
$query2 = "SELECT COUNT(*) FROM main";
$result1 = $connection->query($query1);
$result2 = $connection->query($query2);
$row2 = mysqli_fetch_assoc($result2);
$count = $row2["COUNT(*)"];
$counter = 1;
while ($row1 = mysqli_fetch_array($result1)) {
${getter.$counter++} = "SELECT * FROM " . $row[0];
}
<table>
<?php
for ($i = 1; $i <= $count; $i++) {
${request.$i} = $connection->query(${getter.$i});
while ($row3 = mysqli_fetch_assoc(${request.$i})) {
echo "<tr>";
echo "<td>" . $row['row1'] . "</td>";
echo "<td>" . $row['row2'] . "</td>";
echo "<td>" . $row['row3'] . "</td>";
echo "<td>" . $row['row4'] . "</td>";
}
}
?>
</table>
Thanks.
Updated Answer:
Try the following code
<?php
require_once('includes/api/db-config.php');
$db = Database::getInstance();
$conn = $db->getConnection();
$dbname = 'databaseName';
$sql = "SHOW TABLES FROM {$dbname}";
$result = mysqli_query($conn,$sql);
if (!$result) {
echo 'MySQL Error: ' . mysqli_error($conn);
exit;
}
while ($row = mysqli_fetch_row($result)) {
$tableSql = "SELECT * FROM {$row[0]}";
$tableResult = mysqli_query($conn,$tableSql);
$Response = "<tr>";
while ($tableRow = mysqli_fetch_row($tableResult)) {
$Response .= "<td>{$tableRow["id"]}</td>";
$Response .= "<td>{$tableRow["title"]}</td>";
$Response .= "<td>{$tableRow["description"]}</td>";
$Response .= "<td>{$tableRow["action"]}</td>";
$Response .= "<td>{$tableRow["mods"]}</td>";
$Response .= "<td>{$tableRow["date"]}</td>";
}
$Response .= "</tr>";
}
?>
Now you have data from all the tables one by one now you can display the data in html table.
If you want to loop through all your tables and list the data from each one in a HTML table, including showing the column names, then this should work for you:
//get all the tables in the database
$sql = "SHOW TABLES FROM db_name";
$result = $connection->query($sql);
if ($result === false) die($conn->error);
//loop through the list of tables
while ($row = $result->fetch_row()) {
echo "<h2>Table: ".$row[0]."</h2>";
//now, for the current table, get all the data and loop through the rows
$sql2 = "SELECT * FROM ".$row[0];
$result2 = $connection->query($sql2);
if ($result2)
{
//get the column names
$fields = $result2->fetch_fields();
echo "<table><thead><tr>";
//loop through the field names and output each one as a column heading
foreach ($fields as $fld)
{
echo "<th>".$fld->name."</th>";
}
echo "</tr></thead><tbody>";
//get the rows
while ($row2 = $result2->fetch_row()) {
echo "<tr>";
//loop through each data value in the row and output into a HTML table cell
foreach ($row2 as $cell) {
echo "<td>".$cell."</td>";
}
echo "</tr>";
}
echo "</tbody></table><hr>";
}
else
{
echo "Problem retrieving data for ".$row[0].": ".$conn->error;
}
}
this works for me
require_once('db.php');
$dbname = 'sport';
$sql = "SHOW TABLES FROM $dbname"; $result =
mysqli_query($conn,$sql);
if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysqli_error($conn);
exit; }
while ($row = mysqli_fetch_row($result)) { //print_r($row);
echo "Table: {$row[0]}\n"; }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.