![](/img/trans.png)
[英]Insert rows on one table based on the values of a field of another table in PHP-MySQL
[英]Compare two queries in PHP-MySQL based on datetime and insert selected data into a table
我在MySQL数据库中有Table1
和Table2
。 我想从Table1
选择animals
和gardens
数据,然后我想从Table2
选择new_animals
和new_gardens
,其中datetime在上周内。 然后,在从Table1
调用mysql_fetch_array ($row1)
数据的同时,如果animals
和gardens
字段先前未记录在表Table2
, new_date
date
, animals
和gardens
插入new_date
Table2
new_date
, new_animals
和new_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.