我想用另外两个表的信息更新一个 MySQL 表。我将设置一个 cron 作业,但我不知道要使用什么 PHP 代码。
每次 cron 作业运行时,我希望“配置文件”表中的“VideoNumber”列更新为他们上传到站点的视频数量。视频信息存储在名为“Videos”的表中,每个视频都有一个“OwnerID”来标识上传它的用户。这对应于“配置文件”表中的“ID”列。
我还希望“配置文件”表中的“照片编号”列根据同一用户上传的照片数量进行更新 - 照片数据存储在“照片”列中。
有人可以帮忙吗?
最佳答案
你做错了。创建/删除新视频/照片后立即更新这些列的值。您可以将所有内容包含在事务中以确保一切正常:
BEGIN TRANSACTION;
INSERT INTO videos VALUES (...);
UPDATE profiles SET videosCount = videosCount + 1 WHERE id = ?;
COMMIT;
BEGIN TRANSACTION;
DELETE FROM videos WHERE id = ?;
UPDATE profiles SET videosCount = videosCount - 1 WHERE id = ?;
COMMIT;
对照片做同样的事情。
您甚至可以使用 triggers使一切更清晰(即让数据库处理增加/减少计数列的值)
DELIMITER \\
CREATE TRIGGER abc AFTER INSERT ON videos
FOR EACH ROW BEGIN
UPDATE profiles SET videosCount = videosCount + 1 WHERE id = NEW.profile_id;
END\\
DELIMITER ;
关于更新 MySQL 表的 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3696797/