コーディング時に調べたことのメモ
PHP
- ディレクトリ内のファイル一覧を取得には“glob”
- ディレクトリ内のファイル数を取得には“count”
- パスの一番最後にあるファイル名を取得には”basename”
- テーブルの行数を取得するには“mysql_num_rows”
MySQL
- IGNOREを付けると、重複チェックしてからテーブルに挿入する
- INSERT IGNORE INTO table (col1, col1, …) VALUES (v1, v2, …)
- 条件に合致するデータをインクリメントする
- UPDATE table SET col_counter=(col_counter+1) WHERE col_filename=”xxx”
コード断片
require_once('config.php');
mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME) or die(mysql_error());
mysql_query('SET NAMES UTF8');
// ディレクトリ内のファイル数を取得
$files = glob('data/*');
$filenum = count($files);
// テーブルの行数を取得
$query = 'SELECT * FROM table_name';
$recordSet = mysql_query($query);
$datanum = mysql_num_rows($recordSet);
if ($filenum > $datanum) {
foreach ($files as $filepath) {
$file = basename($filepath); // パスの最後にある名前を取得
$query = sprintf('INSERT IGNORE INTO table_name (filename, counter) VALUES ("%s", 0)', $file);
mysql_query($query);
}
}
$query = sprintf('UPDATE table_name SET counter = (counter + 1) WHERE filename = "%s"', $filename);
mysql_query($query);
関連エントリー