繁体   English   中英

比较基于日期时间的PHP-MySQL中的两个查询,并将所选数据插入表中

[英]Compare two queries in PHP-MySQL based on datetime and insert selected data into a table

我在MySQL数据库中有Table1Table2 我想从Table1选择animalsgardens数据,然后我想从Table2选择new_animalsnew_gardens ,其中datetime在上周内。 然后,在从Table1调用mysql_fetch_array ($row1)数据的同时,如果animalsgardens字段先前未记录在表Table2new_date dateanimalsgardens插入new_date Table2 new_datenew_animalsnew_gardens

请查看表格的示意图并查看下面的代码。 请注意, Table1$select_query1返回4行,因为数据未记录在Table2 ; 它应该插入表Table2 以下代码在没有if条件的情况下工作正常,但不能使用if条件。 你可以告诉我这个问题的if条件的更正版本吗?

$select_query1 = mysql_query("SELECT date, animals, gardens FROM Table1");
$select_query2 = mysql_query("SELECT new_animals, new_gardens FROM Table2  
                                          WHERE new_date between date_sub(now(),INTERVAL 1 WEEK) and now()");
$row1 = mysql_fetch_array($select_query1); // This returns 4 rows
$row2 = mysql_fetch_array($select_query2); // This returs 4 rows
    while ($row1) {
        if ($row2['new_animals'] !== $row1['animals'] && $row2['new_gardens'] !== $row1['gardens']) {
            $animals = $row1['animals'];
            $gardens = $row1['gardens'];
            $date = $row1['date'];
            $insert_query = mysql_query("INSERT INTO Table2 (new_date, new_animals, new_gardens) 
            VALUES ('$date', '$animals', '$gardens')");
    }
}

表的示意图

你的if语句不正确。 您将table1中的行与table2中的第一行进行比较。 你要做的是将table1中的行与table2的所有行进行比较。

试试这个

$select_query1 = mysql_query("SELECT date, animals, gardens FROM Table1");

while ($row1 = mysql_fetch_array($select_query1)) {

    $select_query2 = mysql_query("SELECT new_animals, new_gardens FROM Table2WHERE new_date between date_sub(now(),INTERVAL 1 WEEK) and now()");
    $count=0;
    while($row2 = mysql_fetch_array($select_query2))    
    {
        if ($row2['new_animals'] == $row1['animals'] && $row2['new_gardens'] == $row1['gardens']) {$count=1;}
    }

    if($count==0)
    {
        $animals = $row1['animals'];
        $gardens = $row1['gardens'];
        $date = $row1['date'];
        $insert_query = mysql_query("INSERT INTO Table2 (new_date, new_animals, new_gardens)
        VALUES ('$date', '$animals', '$gardens')");
    }

}
 $select_query1 = mysql_query("SELECT date, animals, gardens FROM Table1");
  $select_query2 = mysql_query("SELECT new_animals, new_gardens FROM Table2  
                                      WHERE new_date between date_sub(now(),INTERVAL 1 WEEK) and now()");

$row1 = mysql_fetch_array($select_query1); // This returns 4 rows
$row2 = mysql_fetch_array($select_query2); // This returs 4 rows

$animalsArray = array();
   while ($row2) {
  $animalsArray[ $row2['new_animals']."_".$row2['new_gardens'] ]=$row2["new_animals"];
   }

$insertValues = "";
while($row1){
   if( $animalsArray[ $row1['animals']."_".$row1['gardens'] ] == "" ){
        $animals = $row1['animals'];
        $gardens = $row1['gardens'];
        $date = $row1['date'];
      $insertValues .= "('$date', '$animals', '$gardens'),";
   }
}

$insertValues = substring( insertValues,0,-1); //delete last comma
$insert_query = "INSERT INTO Table2 (new_date, new_animals, new_gardens)VALUES ".$insertValues." ;
 mysql_query($insert_query);

这行$animalsArray[ $row2['new_animals']."_".$row2['new_gardens'] ] = $row2["new_animals"];

创建一个类似于数组的位置= $ animalsArray [donkey_alabama] ='驴';

这行if( $animalsArray[ $row1['animals']."_".$row1['gardens'] ] == "" ) {}验证是否存在动物和花园,如果不存在则插入

insertValues是在一个语句中插入所有值(更快)

PD:使用mysqli_

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM