将值插入表中,其中id与另一个表中给定值的id匹配

时间:2013-11-09 15:54:49

标签: php mysql sql csv

这是我的mysql表

表oc_product:

product_id    model 

  36547      KTMTGRD1

表oc_url_alias:

url_alias_id             query               keyword

956             product_id=36547    0-Hand-Meat-Grinder-LaCuisine

我的所有产品都在oc_products中。我需要使用csv文件中的所有产品数据填充oc_url_alias:

Model,keyword

KTMTGRD1,0-Hand-Meat-Grinder-LaCuisine

所以基本上我需要从csv文件中获取模型#并使用它来查找oc_product中的product_id。然后我将不得不检查它是否已经存在于oc_alias_id中,如果没有,则插入一个带有数据的新行。

我不知道是否可以单独使用mysql查询,或者我需要php的帮助? 这是我将商店搬到另一个购物车时需要做的一件事。

3 个答案:

答案 0 :(得分:0)

如果它是一次性的话,不要复杂化。只需编写一个小型PHP程序。 所以基本上你需要在Mysql中用2列Model和keyword创建一个临时表,并将csv文件中的所有记录转储到临时表。

在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;

     }     

}

希望这个肝脏

答案 1 :(得分:0)

我认为子查询和INSERT IGNORE ...语法(http://dev.mysql.com/doc/refman/5.5/en/insert.html)的组合应该适合你。

因此,如果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。永远不要相信任何数据,甚至是您自己的数据。

这可以让你走上正轨,但你需要弄清楚细节。

答案 2 :(得分:0)

关于我的第一个答案。这会耗费一些时间,因为您将执行许多查询。因此,您可以读取oc_product表中的所有记录,然后将其存储在数组中。然后在temp_table循环内部,检查oc_product表数组中是否存在临时表中的型号。如果它存在则不要插入,否则插入。

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;

  }     

}