Php 导入具有可变文件名的csv文件
我的供应商每天都会发送一份订单状态更新,其中包含一个可变的静态文件名,以便导入到我的sql db中。我的cronjob具有以下代码:Php 导入具有可变文件名的csv文件,php,sql,csv,import,Php,Sql,Csv,Import,我的供应商每天都会发送一份订单状态更新,其中包含一个可变的静态文件名,以便导入到我的sql db中。我的cronjob具有以下代码: <?php require('cron_config.php'); // Open and parse the sales.csv file $fh = fopen("../files/out/orderstatus.csv", "r"); while ($line = fgetcsv($fh, 1000, ",")) { $order_id =
<?php
require('cron_config.php');
// Open and parse the sales.csv file
$fh = fopen("../files/out/orderstatus.csv", "r");
while ($line = fgetcsv($fh, 1000, ","))
{
$order_id = $line[0];
$order_status_id = $line[1];
$date_modified = $line[2];
// Insert the data into the sales table
$query = "UPDATE oc_order o SET order_status_id='$order_status_id',
date_modified='$date_modified' WHERE order_id = '$order_id'";
$result = $mysqli->query($query);
}
fclose($fh);
$mysqli->close();
?>
为什么不搜索它:
$result = array_filter(array_map(
function($a){
return strpos($a,'orderstatus_')===0?$a:null;
}
,scandir('../files/out/')));
结果数组将只保存文件夹中以orderstatus\uuuu
开头的所有文件。通过glob()和unlink()它完成了任务。代码如下:
<?php
require('cron_config.php');
foreach (glob("../files/out/orderstatus_*.csv") as $filename) {
echo "$filename \n";
}
// Open and parse the sales.csv file
$fh = fopen("$filename", "r");
while ($line = fgetcsv($fh, 1000, ","))
{
$order_id = $line[0];
$order_status_id = $line[1];
$date_modified = $line[2];
// Insert the data into the sales table
$query = "UPDATE oc_order o SET order_status_id='$order_status_id',
date_modified='$date_modified' WHERE order_id = '$order_id'";
$result = $mysqli->query($query);
}
fclose($fh);
unlink("$filename");
$mysqli->close();
?>
您现在使用的方法有什么问题?如果你每天都收到相同的文件,那么就重写旧文件?可惜我不是php的家伙。您需要从orderstatus\u order\u id.csv
中解析订单id,可能需要使用regex
。然后将其存储到变量中,然后在SQL的串联/参数化中使用此变量:WHERE order\u id='“$order\u id.”“
WHERE order\u id='”$订单id。“”
-点,而不是+
's@T.s.inphp@Fred-ii-感谢您的帮助如果您在该目录中没有任何其他文件,id将通过日期创建-您可以通过时间戳获取最新的csv文件-示例。在那之后,我认为只获取.csv文件的id很简单。当然,但这需要文件夹只包含一个文件,不是吗?@Fred-ii-认为OP显示的不是这背后的全部逻辑。导入/更新后是否删除文件?文件夹中是否同时有多个CSV?那么应该导入所有文件吗?等等……Lordie,很难说,IMHO认为这个问题对于(动态)文件将从何而来/如何来都不清楚/太广泛。所以我被指向如何用我的代码识别这个文件?
仅;-)哈哈,不知道。我想如果这就是问题所在的话,我会做好的。