【问题标题】:PHP code to update MySQL table更新 MySQL 表的 PHP 代码
【发布时间】:2010-09-13 05:59:34
【问题描述】:

我想用其他两个表的信息更新一个 MySQL 表。我将设置一个 cron 作业,但我不知道要使用什么 PHP 代码。

每次运行 cron 作业时,我都希望“配置文件”表中的“视频编号”列根据他们上传到网站的视频数量进行更新。视频信息存储在一个名为“视频”的表中,每个视频都有一个“OwnerID”来标识上传它的用户。这对应于“配置文件”表中的“ID”列。

我还希望使用同一用户上传的照片数量来更新“个人资料”表中的“照片编号”列 - 照片数据存储在“照片”列中。

有人可以帮忙吗?

【问题讨论】:

    标签: php sql mysql cron


    【解决方案1】:

    你做错了。在创建/删除新视频/照片后立即更新这些列的值。您可以将所有内容包含在事务中以确保一切正常:

    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 ;
    

    【讨论】:

    • INSERT 触发器有效。删除视频时我会使用什么触发器?
    • 我想通了,您将“+ 1”替换为“- 1”,将“NEW.profile_id”替换为“OLD.profile_id”。谢谢
    • P.S.,如果有人正在阅读这个问题 - 我真的建议像 Crozin 建议的那样更改 PHP 代码。触发器没问题,但在我看来,它们更容易破解。此外,令我难以置信的是,一些主机拒绝允许您通过 SQL 命令在 phpMyAdmin 上创建触发器。除非您购买 VPS 或专用服务器包,当然...
    【解决方案2】:

    您必须首先从这两个表中选择数据,将某些数据分配给 INSERT 并将其传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多