-1

私はこれを持っています。ファイルを含むディレクトリをスキャンしています(例:count.php.2013-04-11_151028.bak)。ファイル名から日付と時刻だけが必要で、それらをデータベースに挿入したい-2つのフィールドを持つテーブル(table2)(file_date -t​​imestamp、count-int)。カウントは、そのフォルダーに日付が何回あるかを確認します (たとえば、5 つのファイル名に日付が含まれている場合、カウントは 5 になります。ファイルの日付に db にレコードがない場合、日付が挿入され、カウントは 1 になります)。同じファイルを常にスキャンしたくないため、挿入されたすべてのファイルはソースディレクトリから別のディレクトリに削除されます。

$dir = "ルート1"; $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);
            }   
        }
}
4

2 に答える 2

1

count()予約キーワードです。あなたはそれを目盛りに入れる必要があります:

UPDATE table2 SET `count`=`count`+1 WHERE file_date='$data'
INSERT INTO table2 (file_date, `count`) VALUES ('$data',1)
于 2013-04-15T12:20:12.243 に答える
1

さて、私は問題を見つけました。これは次のとおりです: 行を置き換えます: if($row >0)

with: if($row ['total'] >0).

そして、問題は完了です!挿入および更新作業。ありがとう!

于 2013-04-16T07:43:23.777 に答える