我有这个。我正在扫描带有文件的目录(例如:count.php.2013-04-11_151028.bak)。从文件名我只需要日期和时间,我想将它们插入数据库 - 具有 2 个字段(file_date -timestamp,count-int)的表(table2)。计数验证日期在该文件夹中的次数(例如:如果 5 个文件名包含某个日期,则计数为 5。如果文件中的日期在 db 中没有记录,则将插入日期并且计数为 1。)。所有插入的文件都将从源目录中删除到另一个目录,因为我不想一直扫描相同的文件。
$dir = "route1"; $files = scandir($dir);
foreach ($files as $file_name)
{
$data = '';
$an = substr($file_name, -21, 4);
$luna = substr($file_name, -16, 2);
$zi = substr($file_name, -13, 2);
$ora = substr($file_name, -10, 2);
$min = substr($file_name, -8, 2);
$data = $an. '-' .$luna. '-' .$zi. ' ' .$ora. ':' .$min.':'.'00';
if(strtotime($data) == FALSE ) continue;
$result = mysqli_query($con,"SELECT count(*) as total FROM table2 WHERE file_date='$data'");
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if($row >0) {
mysqli_query($con, "UPDATE table2 SET count=count+1 WHERE file_date='$data'");
}
else {
mysqli_query($con,"INSERT INTO table2 (file_date, count) VALUES ('$data',1)");
$source = "route1";
$destination = "route2";
foreach ($files as $file) {
if (in_array($file, array(".",".."))) continue;
if (copy($source.$file, $destination.$file)) {
$delete[] = $source.$file;
}
}
foreach ($delete as $file) {
unlink($file);
}
}
}