Php 选择数据库中每个表的最后一条记录
我想显示数据库中每个表的最后一条记录。所有表格的结构与以下表格相同:Php 选择数据库中每个表的最后一条记录,php,mysql,sql,Php,Mysql,Sql,我想显示数据库中每个表的最后一条记录。所有表格的结构与以下表格相同: +------+-----------+------------+--------+-----------+ | id | kh_ho | kh_ha | total | base_num | +------+-----------+------------+--------+-----------+ | 1 | 2400 | 2000 | 2569 | 12548
+------+-----------+------------+--------+-----------+
| id | kh_ho | kh_ha | total | base_num |
+------+-----------+------------+--------+-----------+
| 1 | 2400 | 2000 | 2569 | 12548 |
| 2 | 2600 | 2195 | 2569 | 12548 |
| 3 | 2800 | 2400 | 2569 | 12548 |
| 4 | 4700 | 4450 | 2569 | 12548 |
| 5 | 5200 | 5000 | 2569 | 12548 |
| 6 | 4800 | 4795 | 2569 | 12548 |
| 7 | 5000 | 4990 | 2569 | 12548 |
| 8 | 5800 | 5795 | 2569 | 12548 |
| 9 | 7500 | 7950 | 2569 | 12548 |
| 10 | 8300 | 8495 | 2569 | 12548 |
我想显示每个数据库表的最后一条记录,并在表的最后两列显示echokh_-ho
和kh_-ha
你能用PHP和MySQL帮我一下吗?用这行查询怎么样
SELECT * FROM MyTable ORDER BY id DESC LIMIT 1;
完整的PHP代码:
我不是PHP高手,但这应该会有帮助:
<?php
$dbc = mysqli_connect('localhost','test','test','test') or die('Error connecting to MySql Server.');
$queryShowTable = "SHOW TABLES;";
$querySelect_Template = "SELECT kh_ho, kh_ha FROM ";
$listOftables = mysqli_query($dbc,$queryShowTable) or die('Error querying database.');
echo '<table>';
while($table=mysqli_fetch_array($listOftables)){
$querySelectData = $querySelect_Template.$table[0].' ORDER BY id DESC LIMIT 1;';
$tableData = mysqli_query($dbc,$querySelectData) or die('Error querying database.');
while($row = mysqli_fetch_array($tableData)){
echo '<tr><td>'.$row[0].'</td><td>'.$row[1].'</tr>';
}
}
echo '</table>';
mysqli_close($dbc);
?>
使用此单行查询如何
SELECT * FROM MyTable ORDER BY id DESC LIMIT 1;
完整的PHP代码:
我不是PHP高手,但这应该会有帮助:
<?php
$dbc = mysqli_connect('localhost','test','test','test') or die('Error connecting to MySql Server.');
$queryShowTable = "SHOW TABLES;";
$querySelect_Template = "SELECT kh_ho, kh_ha FROM ";
$listOftables = mysqli_query($dbc,$queryShowTable) or die('Error querying database.');
echo '<table>';
while($table=mysqli_fetch_array($listOftables)){
$querySelectData = $querySelect_Template.$table[0].' ORDER BY id DESC LIMIT 1;';
$tableData = mysqli_query($dbc,$querySelectData) or die('Error querying database.');
while($row = mysqli_fetch_array($tableData)){
echo '<tr><td>'.$row[0].'</td><td>'.$row[1].'</tr>';
}
}
echo '</table>';
mysqli_close($dbc);
?>
由于最后一条记录的id最高
SELECT * FROM `yourtable` WHERE `id` = (select max(id) from `yourtable`);
Use也可以使用orderby子句
SELECT * FROM `yourtable` ORDER BY id DESC LIMIT 1;
用于获取所有表条目
SELECT * FROM `firsttable` WHERE `id` = (select max(id) from `firsttable`)
UNION ALL
SELECT * FROM `secondtable` WHERE `id` = (select max(id) from `secondtable`)
UNION ALL
SELECT * FROM `thirdtable` WHERE `id` = (select max(id) from `thirdtable`)
.
.
.
UNION ALL
SELECT * FROM `lasttable` WHERE `id` = (select max(id) from `lasttable`);
Union all将确保为不同的表列出相同的条目
编辑2
由于最后一条记录的id最高
SELECT * FROM `yourtable` WHERE `id` = (select max(id) from `yourtable`);
Use也可以使用orderby子句
SELECT * FROM `yourtable` ORDER BY id DESC LIMIT 1;
用于获取所有表条目
SELECT * FROM `firsttable` WHERE `id` = (select max(id) from `firsttable`)
UNION ALL
SELECT * FROM `secondtable` WHERE `id` = (select max(id) from `secondtable`)
UNION ALL
SELECT * FROM `thirdtable` WHERE `id` = (select max(id) from `thirdtable`)
.
.
.
UNION ALL
SELECT * FROM `lasttable` WHERE `id` = (select max(id) from `lasttable`);
Union all将确保为不同的表列出相同的条目
编辑2
首先,您需要启动一个查询:
SHOW TABLES;
结果你会得到所有的表格。
现在使用PHP的foreach()
这只是一个想法。首先,您需要启动一个查询:
SHOW TABLES;
结果你会得到所有的表格。
现在使用PHP的foreach()
这只是一个想法。到目前为止您尝试了什么?id是自动递增的主键吗?是的id是递增的主键。我尝试使用“$sql='SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS,其中COLUMN_NAME IN(“kh_ho”)和TABLE_SCHEMA=“mydb”;”;”并没有结果。这不太难?看起来像是xy问题,为什么需要这样做?到目前为止您尝试了什么?是
id
自动递增的主键吗?是的id是递增的主键。我尝试使用“$sql='SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN”(“kh_ho”)和TABLE_SCHEMA=“mydb”;”;”并没有结果。这不是太难吗?看起来像xy问题,为什么需要这样做?mytable是否包含数据库中的所有表?不,它是单个表。。。将“MyTable”替换为您的表名。您需要对每个表进行迭代并执行查询。如何获得每个表的名称(它们大约是95个表)?使用这个?mytable是否包含数据库中所有的表?不,它是一个表。。。将“MyTable”替换为您的表名。您需要对每个表进行迭代并执行查询。如何获得每个表的名称(它们大约是95个表)?使用这个?我如何在数据库中的所有表中使用它?我不能为每个表写表名…表大约有95个。我如何自动获取每个表的名称并执行此代码?最好的方法是在php中获取数组中的名称,然后创建上面的查询,执行它并获得结果。问题是如何获取所有表的名称。。。我将下面的代码用于thaht'$sql=“showtables;”;$result=mysqli\u查询($con,$sql);打印(结果);foreach($result AS$k=>$v){echo$v['tablename'];}'我如何在数据库中的所有表中使用它?我不能为每个表写表名…表大约有95个。我如何自动获取每个表的名称并执行此代码?最好的方法是在php中获取数组中的名称,然后创建上面的查询,执行它并获得结果。问题是如何获取所有表的名称。。。我将下面的代码用于thaht'$sql=“showtables;”;$result=mysqli\u查询($con,$sql);打印(结果);foreach($k=>$v){echo$v['tablename'];}'我在foreach中做了一个echo$v[tablename'}什么都没有显示我可以用mysqli($con,$sql)运行show tables吗?因为当我调用它…并打印ans时…它显示[current_field]=>0[field_count]=>1[length]=>[num rows]=>98[type]=>0并且不能用它来代替$V['Tables\'u in_write\'u your_db\'u name']而不是$V['tablename']。用实际的db name替换write\'u your_\'db\'u name。我在foreach中写回音$V[tablename'}没有显示我可以用mysqli($con,$sql)运行show Tables吗?因为当我调用它时…并打印ans…它显示[current\'u field]=>0[field_count]=>1[length]=>[num_rows]=>98[type]=>0并且不能将其用于$V['Tables_in_write_your_db_name']而不是$V['tablename']。请将write_您的_db_名称替换为实际的db名称。