我正在尝试运行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>';
} ?>
答案 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';
}
}
?>
如果所述列的值不为空,则应该包含表中包含相应列名的结果。