PHP通过最新数据从2个表中回显Mysql数据

PHP通过最新数据从2个表中回显Mysql数据,php,mysql,Php,Mysql,因此,我尝试从两个不同的表中回显10个最新数据。我试过了 $stmt60 = $db->prepare("SELECT * FROM 54x2 ORDER BY date_time DESC LIMIT 5"); $stmt60->execute(); $stmt61 = $db->prepare("SELECT * FROM dd ORDER BY date_time DESC LIMIT 5"); $stmt61->execute(); $row60 = $stmt6

因此,我尝试从两个不同的表中回显10个最新数据。我试过了

$stmt60 = $db->prepare("SELECT * FROM 54x2 ORDER BY date_time DESC LIMIT 5");
$stmt60->execute();
$stmt61 = $db->prepare("SELECT * FROM dd ORDER BY date_time DESC LIMIT 5");
$stmt61->execute();
$row60 = $stmt60->fetch();
$row61 = $stmt61->fetch();
我还将其存储在大量数组中,如下所示:

$var = array($row60['date_time'], $row62['date_time'], $row64['date_time'], $row66['date_time'], $row68['date_time'], $row70['date_time'], $row72['date_time'], $row74['date_time'], $row76['date_time'], $row78['date_time']);
$var7 = array($row61['date_time'], $row63['date_time'], $row65['date_time'], $row67['date_time'], $row69['date_time'], $row71['date_time'], $row73['date_time'], $row75['date_time'], $row77['date_time'], $row79['date_time']);
在偏移量增加1的情况下做了大约10次,然后做了100个if语句来检查哪一个是新的,但是我试了几个小时,我没能让它工作。有没有一种更简单的方法可以做到这一点,而不必使用100-200个if语句?

选项1:联合 这样问题就解决了。列计数应该是相同的,但是您可以控制您获取的内容,因此可以通过指定您获取的确切列来安排(除非这些列的结果完全不同,并且您需要来自每种类型的完全不同的数据)

SQL:


选项2:单程 其思想是每次比较两个当前元素并移动一个指针(较大的一个)并保持第二个指针不变时循环两个结果一次(一起),直到两个结果结束

$stmt60 = $db->prepare("SELECT * FROM 54x2 ORDER BY date_time DESC LIMIT 5");
$stmt60->execute();
$stmt61 = $db->prepare("SELECT * FROM dd ORDER BY date_time DESC LIMIT 5");
$stmt61->execute();

$row60 = $stmt60->fetch();
$row61 = $stmt61->fetch();
do
{
   if($row60 && (!$row61 || $row60['date_time']>$row61['date_time']))
   {
      var_dump($row60); // output row60
      $row60 = $stmt60->fetch();
   }
   if($row61 && (!$row60 || $row61['date_time']>=$row60['date_time']))
   {
      var_dump($row61); // output row61
      $row61 = $stmt61->fetch();
   }
}
while($row60 || $row61);

选项3:合并和排序 我甚至不应该提及这一点,因为内存消耗和效率都比选项2差得多


但是,您可以创建一个包含从这两条语句中获取的所有元素的数组,然后在php中对结果进行排序(按或)

为什么需要200
if
s?你可以做一个大的选择,如果只拉日期列,不要使用
*
使用列名
orderbydate\u time DESC LIMIT 5
将为您提供5条最新记录(假设这是一个datetime列)。我想我已经尝试过了,但没有成功,因为列是不同的,我尝试过了。因为我尝试回显的不仅仅是date\u time,我还有10个数组包含列名。
$stmt60 = $db->prepare("SELECT * FROM 54x2 ORDER BY date_time DESC LIMIT 5");
$stmt60->execute();
$stmt61 = $db->prepare("SELECT * FROM dd ORDER BY date_time DESC LIMIT 5");
$stmt61->execute();

$row60 = $stmt60->fetch();
$row61 = $stmt61->fetch();
do
{
   if($row60 && (!$row61 || $row60['date_time']>$row61['date_time']))
   {
      var_dump($row60); // output row60
      $row60 = $stmt60->fetch();
   }
   if($row61 && (!$row60 || $row61['date_time']>=$row60['date_time']))
   {
      var_dump($row61); // output row61
      $row61 = $stmt61->fetch();
   }
}
while($row60 || $row61);