Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择数据库中每个表的最后一条记录_Php_Mysql_Sql - Fatal编程技术网

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     | 
我想显示每个数据库表的最后一条记录,并在表的最后两列显示echo
kh_-ho
kh_-ha


你能用PHPMySQL帮我一下吗?

用这行查询怎么样

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名称。