mysql / php从查询和返回表名中获取结果,其中找到结果?

时间:2015-01-30 10:56:56

标签: php mysql

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

我在查询中搜索了2个表格,' supplier_invoices'和' supplier_bank_details'如果任何一个表包含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>';    

} ?>

2 个答案:

答案 0 :(得分:0)

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

http://php.net/manual/en/function.mysql-field-table.php

来自同一链接的示例

<?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";
}

?>

请使用mysqli_ functions,因为不推荐使用mysql_,将来版本不支持

答案 1 :(得分:0)

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

例如

  <?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';
            }

        }
        ?>

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