我有一个数据库,其中条目插入到带有时间戳的表中(来自 PHP 的 inttime()
不是 SQL 时间戳)。我想进行查询以删除最大时间戳小于到期时间(从执行查询时开始的某个时间)的所有表。现在我有
$q = mysqli_query(..., "SHOW TABLES LIKE 'prefix%'");
if($q===FALSE) die(mysqli_error(...));
for($row in mysqli_fetch_array($q)){
$slice = array_slice($row, 0, 1);
$tbl = array_shift($slice);
mysqli_query(..., "DROP TABLE `$tbl` WHERE ((SELECT GREATEST (SELECT `time` FROM `$tbl`)) <= $expiry_time)");
}
这会产生 SQL 语法错误。
实现这一目标的正确方法是什么?此外,是否有可能消除 PHP 逻辑,只循环遍历每个表,并在必要时将其全部删除在 SQL 中?