问题描述
我的站点允许用户创建事件,我需要在这些事件发生后从 MysqL 数据库中删除这些事件。因此,当用户创建他们的事件时,我试图在数据库中安排一个事件,该事件在用户提供的时间后立即删除用户的事件信息。
例如,我希望活动与这里的其他活动一样:
这是我尝试的一种尝试:
$stmtstr = "
CREATE EVENT event_" . $roomID . "_" . $current_time . "_DELETEPRAYER
ON SCHEDULE AT '" . $timetoDeletePrayerFormatted . "'
DO
DELETE FROM prayer_rooms WHERE roomID = $roomID
";
$stmt3 = $conn->prepare(strval($stmtstr));
$roomID、$current_time 和 $timetoDeletePrayerFormatted 都是有效值。即便如此,prepare() 在这里返回一个布尔值,表明 MysqL 语句有问题。我使用在这里进入 prepare() 的完全相同的字符串手动运行该语句,并且它成功运行且没有错误。
我也尝试过使用 ?s 和 bind_param() 但没有成功。
对于什么类型的 MysqL 语句可以是动态的,是否有简单的限制?有什么方法可以根据用户提供的时间在数据库中创建计划事件吗?
解决方法
根据 Tangentially Perpendicular 的评论,我将每个事件的所有到期时间甚至存储在各自的表中,并创建了一个每隔几分钟运行一次的 MySQL 事件,并根据到期时间删除这些事件。我非常感谢您的帮助!