使用CSV文件中的数据更新WordPress mySQL数据库 - 每天,自动?

时间:2012-07-24 14:55:40

标签: mysql sql wordpress csv

我正在尝试使用CSV文件中的数据更新WordPress数据库中的特定表(表格由Formidable Pro WP插件创建) - 此过程需要每天自动运行。

以下代码(放在我的WordPress网站的functions.php文件中):

if (!wp_next_scheduled('my_csvtask_hook')) {
wp_schedule_event( current_time(), 'hourly', 'my_csvtask_hook' );
}

add_action( 'my_csvtask_hook', 'my_csvtask_function' );


function my_csvtask_function() {
   global $wpdb;
$csv_url = "http://ribprototype2.mobilusdesign.com/wp-content/silverware/YUST_S01.csv";

$fp = fopen($csv_url,'r') or die("can't open file");
while($csv_line = fgetcsv($fp,1024)) {
  $custCode = $csv_line['0'];
  $points = $csv_line['13'];
  $cardNumber = $csv_line['33'];
  $qrySel = "select * from wp_frm_items where meta_value = ".$custCode;
  $itemdata = $wpdb->get_row($qrySel);
  $itemid = $itemdata->item_id;
  $updateQry = "update wp_frm_item_metas set meta_value = '".$points."' where  field_id='179' and item_id='".$itemid."'";
  $run_qry = $wpdb->query($updateQry);
  $updateQry1 = "update wp_frm_item_metas set meta_value = '".$cardNumber."' where field_id='180' and item_id='".$itemid."'";
  $run_qry1 = $wpdb->query($updateQry1);
  }
fclose($fp) or die("can't close file"); 
}

CSV文件包含多个列 - 但我唯一需要的是第一个(0),第十四个(13)和第三十四个(33)。

mySQL中的Formidable Pro表名为“wp_frm_item_metas”,包含几列:

(我试图上传图片 - 但我是堆叠器的新手:)

id, meta_value, field_id, item_id

1, 202020, 178, 4503
2, 230, 179, 4503
3, 303330, 180, 4503
4, 202021, 178, 4504
5, 354, 179, 4504
6, 444404, 180, 4504

此表包含每个用户的每个表单条目中的所有数据。每个用户只有一个条目。 “item_id”列指的是每个用户的表单提交。特定字段(来自表单)位于“field_id”列中。基本上,我需要为每个用户更新相应的meta_value - 对于field_id 179和180 - 客户代码是字段178。

因此,在CSV中,我需要通过匹配“item_id”全部相等的客户代码meta_value(对于字段178)来“更新”字段179和180的wp_frm_item_metas元值(即,来自同一用户的所有内容) CSV文件的每一行都引用一个特定的“用户”,相应的数据可以在第1列(field_id 178),第14列(field_id 179)和第34列(field_id 180)中找到。

我需要每天运行更新(因为每天早上将CSV推送到服务器)。

有什么想法吗?

麦克

0 个答案:

没有答案