try{$db->exec("ALTER TABLE movies ADD COLUMN remark TEXT");}catch(PDOException$e){}
try{$db->exec("ALTER TABLE viewers ADD COLUMN person_id INTEGER REFERENCES persons(id) ON DELETE SET NULL");}catch(PDOException$e){}
// 新增:管理员关联观影人
try{$db->exec("ALTER TABLE admins ADD COLUMN person_id INTEGER REFERENCES persons(id) ON DELETE SET NULL");}catch(PDOException$e){}
// ===== 迁移旧数据 =====
// 将 viewers.name 迁移到 persons
$stmt=$db->query("SELECT DISTINCT name FROM viewers WHERE name != '' AND name IS NOT NULL");
$names=$stmt->fetchAll(PDO::FETCH_COLUMN);
foreach($namesas$name){
$chk=$db->prepare("SELECT id FROM persons WHERE name = ?");
$chk->execute([$name]);
if(!$chk->fetch()){
$ins=$db->prepare("INSERT INTO persons (name) VALUES (?)");
$ins->execute([$name]);
}
}
$update=$db->prepare("UPDATE viewers SET person_id = (SELECT id FROM persons WHERE persons.name = viewers.name) WHERE person_id IS NULL AND name IS NOT NULL");
$update->execute();
// 默认管理员
$stmt=$db->prepare("SELECT COUNT(*) FROM admins");
$stmt->execute();
if($stmt->fetchColumn()==0){
$hashed=password_hash('123456',PASSWORD_DEFAULT);
$stmt=$db->prepare("INSERT INTO admins (username, password) VALUES (?, ?)");