中的值的MySQL和PHP DROP TABLE我有一個數據庫,其中條目插入帶有時間戳(來自PHP的time()
而不是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?
DROP TABLE命令中沒有WHERE子句。您確定要刪除表格而不刪除行嗎? – AgRizzo
我打賭這可以在循環中使用準備好的語句在存儲過程中完成。 http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-prepared-statements.html – captainroxors
我應該在發佈之前查找drop table的語法。我的錯。你是對的,它沒有where子句。那麼我想如何實現? – DankMemes