나는 타임 스탬프 (SQL의 타임 스탬프가 아닌 PHP의 time()
의 int)가있는 테이블에 항목이 삽입되는 데이터베이스가 있습니다. 가장 큰 타임 스탬프가 만료 시간보다 짧은 모든 테이블을 삭제하도록 쿼리를 만들고 싶습니다 (쿼리가 실행 된 시간으로부터 약간의 시간). 지금 당장 가지고 있어요테이블의 값을 기반으로 MySQL과 PHP DROP TABLE
$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