mysql/php从查询中获取结果并返回表名,结果在哪里找到?

mysql/php从查询中获取结果并返回表名,结果在哪里找到?,php,mysql,Php,Mysql,我正在尝试运行MySQL查询,以查看最近是否对我的两个表进行了任何更改。这是通过检查数据库来实现的,以查看是否有日期小于30天的记录 我正在查询中搜索两个表,“供应商发票”和“供应商银行详细信息”,如果其中一个表包含30天内的记录,则应显示这些结果 但是我正在努力做下一件事 我希望能够告诉它在哪个表中找到了结果,以便它能够呼出正确的行,或者“您更改了您的银行详细信息”或者“您提交了发票” 例如,如果用户更改了银行详细信息,则应响应: 'Bank details changed {sort

我正在尝试运行MySQL查询,以查看最近是否对我的两个表进行了任何更改。这是通过检查数据库来实现的,以查看是否有日期小于30天的记录

我正在查询中搜索两个表,“供应商发票”和“供应商银行详细信息”,如果其中一个表包含30天内的记录,则应显示这些结果

但是我正在努力做下一件事

我希望能够告诉它在哪个表中找到了结果,以便它能够呼出正确的行,或者“您更改了您的银行详细信息”或者“您提交了发票”

例如,如果用户更改了银行详细信息,则应响应:

'Bank details changed     {sortcode}      {account number}    about 2 days ago'
和/或如果供应商提交发票,则应显示/同时显示:

'invoice submited      {reference}      {status}    about 2 days ago'
有人知道我怎样才能让它工作吗?提前谢谢

我的代码:

<?php require_once 'config.php'; ?>

<?php
$tbl_name3 = 'supplier_bank_details';
$tbl_name2 = 'supplier_invoices';
$query3 = "select * from $tbl_name2 as $tbl_name2_result, $tbl_name3 as $tbl_name3_result WHERE date > NOW() - INTERVAL 30 DAY ORDER BY date DESC";
$result3 = mysql_query($query3) or die( mysql_error() );
$row3 = mysql_fetch_assoc($result3); 


$datetime1 = new DateTime(); // Today's Date/Time
$datetime2 = new DateTime($row3['date']);
$interval = $datetime1->diff($datetime2);


$account_number = '****'.substr($row3['account_number'], -4);

if(mysql_num_rows($result3) > 0) {

if(mysql_num_rows($tbl_name2_result) > 0) {

echo '<div class="contracts_area"><div class="table_header"></div>';
echo '<div class="request"><p>Bank Details Changed</p><p>'.$row3['sort_code'].'</p><p>'.$account_number.'</p><p>about '.$interval->format('%d days ago').'</p></div>';
echo '</div>';

}else{

if(mysql_num_rows($tbl_name3_result) > 0) {

echo '<div class="contracts_area"><div class="table_header"></div>';
echo '<div class="request"><p>Invoice Raised</p></div>';
echo '</div>';
}   
}

echo '<div class="no_activity">No Recent Activity</div>';    

} ?>


您可以使用内置函数,因为结果中已经有字段名,所以只需获取字段所属表的名称即可

来自同一链接的示例

<?php

$query = "SELECT account.*, country.* FROM account, country WHERE country.name = 'Portugal' AND account.country_id = country.id";

// get the result from the DB
$result = mysql_query($query);

// Lists the table name and then the field name
for ($i = 0; $i < mysql_num_fields($result); ++$i) {
    $table = mysql_field_table($result, $i);
    $field = mysql_field_name($result, $i);

    echo  "$table: $field\n";
}

?>

假设每个表都有一个唯一的列名,您可以通过它来识别它们,为什么不检查这些列中的空值呢

例如



如果所述列的值不为null,则应该从包含相应列名的表中获得结果。

ew,
mysql.*
functions。根据PHP手册,它们已被弃用。谢谢,我试过了,但出于某种原因,尽管我的供应商银行详情表只有一个结果,但它大约5次回显“找到银行详情时的代码”,尽管只有一个结果?除了发票表,它的操作完全相同。有什么想法吗?
var\u dump()
将数据发布到这里(将其添加到您的问题中),这样我就可以看到您正在处理的内容。或者,从mysql命令行客户端发布查询结果。。。我真的需要看看您使用的是什么数据。谢谢。不过,这只提供了列名,而不是该列中存储的值。我该如何修改它以给出与列名相反的值?@JamesDaley mysql_field_table返回表名
  <?php
        $tbl_name3 = 'supplier_bank_details';
        $tbl_name2 = 'supplier_invoices';
        $query3 = "select * from $tbl_name2 as $tbl_name2_result, $tbl_name3 as $tbl_name3_result WHERE date > NOW() - INTERVAL 30 DAY ORDER BY date DESC";
        $result3 = mysql_query($query3) or die( mysql_error() );
        while($row3 = mysql_fetch_assoc($result3)){

            // your unique column for Bank Details
            if( !is_null($row3['sortcode']) ) {

                echo 'your code for when Bank details are found';

            }
            // your unique column for Invoice Details
            if( !is_null($row3['reference'])) { 

                echo 'your code for when Invoice details are found';
            }

        }
        ?>