Php 在id与另一个表中给定值的id匹配的表中插入值

Php 在id与另一个表中给定值的id匹配的表中插入值,php,mysql,sql,csv,Php,Mysql,Sql,Csv,这是我的mysql表 表oc_产品: product_id model 36547 KTMTGRD1 表oc_url_别名: url_alias_id query keyword 956 product_id=36547 0-Hand-Meat-Grinder-LaCuisine 我所有的产品都在oc_产品中。我需要使用csv文件中的所有产品数据填充oc_url_别名: Model,k

这是我的mysql表

表oc_产品:

product_id    model 

  36547      KTMTGRD1
表oc_url_别名:

url_alias_id             query               keyword

956             product_id=36547    0-Hand-Meat-Grinder-LaCuisine
我所有的产品都在oc_产品中。我需要使用csv文件中的所有产品数据填充oc_url_别名:

Model,keyword

KTMTGRD1,0-Hand-Meat-Grinder-LaCuisine
因此,基本上我需要从csv文件中获取模型,并使用它在oc#U产品中查找产品id。然后我必须检查它是否已经存在于oc_alias_id中,如果不存在,则插入一个包含数据的新行

我不知道这是否可以通过mysql查询单独完成,或者我需要php的帮助?
这是我将店铺转移到另一个购物车时需要做的一次性工作。

如果是一次性工作,请不要把事情复杂化。只需编写一个小PHP程序。 因此,基本上您需要在Mysql中创建一个包含两列Model和keyword的temp表,并将所有记录从csv文件转储到temp表中

在PHP程序中,读取此临时表并运行循环

select * from temp_table;
loop through all the records{

  select count(*) from oc_product where model_no = temp_table.model_no;

     if (count==0){

       insert into the new table;

     }     

}

希望这个hepls

我认为子查询和插入忽略的组合。。。这里的语法()应该适用于您

因此,如果CSV文件中当前行的值在$model和$keyword中,如下所示:

INSERT IGNORE INTO oc_url_alias (query, keyword)
    SELECT CONCAT('product_id=',product_id), '$keyword' 
    FROM oc_product WHERE oc_product.model 
    LIKE '$model';
注意:您必须根据所使用的数据库访问方法,找出插入PHP变量的最佳方法。最安全的方法是使用MYSQLi或PDO以及准备好的语句,但如果不是这样,则在它们上运行mysql_real_escape_string。永远不要相信任何数据,即使是你自己的数据


这应该会让你走上正确的轨道,但你需要解决细节。

关于我的第一个答案。这需要花费一些时间,因为您将执行许多查询。因此,您也可以从oc_product表中读取所有记录,然后将其存储在数组中。然后在temp_表循环中,检查oc_产品表数组中是否存在temp表中的型号。如果存在,则不要插入,否则插入

select * from oc_product;
$array = store product_id and model;

select * from temp_table;
loop through all the records{


  if (!model_no.exists[$array]){

     insert into the new table;

  }     

}