Php 数组中所有mysql表名中的金额之和

Php 数组中所有mysql表名中的金额之和,php,mysql,Php,Mysql,我的数据库中有6个mysql表 每个表都包含列“金额” 我想要所有表格中所有金额的总和。 $tablenamearray = array(); $tablenamequery = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'databasename' and table_name LIKE '%registration%'"; $tablenameres = $d

我的数据库中有6个mysql表

每个表都包含列
“金额”

我想要所有表格中所有金额的总和。

$tablenamearray = array(); 
    
$tablenamequery = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'databasename' and table_name LIKE '%registration%'";

$tablenameres = $database->get_results($tablenamequery);
foreach ($tablenameres as $tablenamedata){
    $tablenamearray[]=$tablenamedata['table_name'];
}

$tablenamearray_final =   "'".join("', '",$tablenamearray)."'"; 
$tablenamesrcvd = "array(".$tablenamearray_final.");";

///$tablenamesrcvd are as given below when I echo
// array('table_1','table_2','table_3','table_4','table_5','table_6'); 

foreach ($tablenamesrcvd as $tablename) {
    $query = "select SUM(`amount`) as Total from $tablename";
    $res = $database->get_results($query); // using wrapper class
    foreach ($res as $data){
        $totalrcvd = $data['Total'];
    }       
}
但得到的错误是

 Invalid argument supplied for foreach() in //  foreach ($tablenames as $tablename) {

代码如下:

我希望从我的数据库中获得特定的表,每年将添加更多的表,其中将包含
amount
列。所以我先提取了表名。

$tablenamearray = array(); 
    
$tablenamequery = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'databasename' and table_name LIKE '%registration%'";

$tablenameres = $database->get_results($tablenamequery);
foreach ($tablenameres as $tablenamedata){
    $tablenamearray[]=$tablenamedata['table_name'];
}

$tablenamearray_final =   "'".join("', '",$tablenamearray)."'"; 
$tablenamesrcvd = "array(".$tablenamearray_final.");";

///$tablenamesrcvd are as given below when I echo
// array('table_1','table_2','table_3','table_4','table_5','table_6'); 

foreach ($tablenamesrcvd as $tablename) {
    $query = "select SUM(`amount`) as Total from $tablename";
    $res = $database->get_results($query); // using wrapper class
    foreach ($res as $data){
        $totalrcvd = $data['Total'];
    }       
}

我缺少什么?

$tablenamesrcvd
是一个字符串,而不是数组

变量
$tablenamearray
包含表名数组,您可以循环该数组。您不需要将其转换为字符串

您还应该添加到
$totalrcvd
,而不是每次通过循环使用
+=
而不是
=
重新分配它

$totalrcvd = 0;
foreach ($tablenamesarray as $tablename) {
    $query = "select SUM(`amount`) as Total from $tablename";
    $res = $database->get_results($query); // using wrapper class
    foreach ($res as $data){
        $totalrcvd += $data['Total'];
    }       
}
echo $totalrcvd;

. 您确定错误与该行有关吗?可能是另一个foreach。您确定错误来自
foreach($tablenames as$tablename){
?仅从您发布的代码片段来看,问题还不清楚。请发布更多/所有代码。但您没有将其用于任何用途,您只需使用硬编码的
$tablenames
数组。显示实际代码,因为这就是问题所在。是的……它工作了……感谢您澄清了我的想法……thnxI再次测试和检查……但是此代码仅给出最后一个表的总和…例如,我上面的问题中的表6…当我在总和查询中手动添加每个表名时,它正在工作…您是否将
$totalrcvd=
更改为
$totalrcvd+=
以便将所有结果相加?是的…直到问题相同为止