2010-09-12 3 views
1

Я хочу обновить таблицу MySQL информацией из двух других таблиц. Я создам работу cron, но я не знаю, какой код PHP использовать.PHP-код для обновления таблицы MySQL

Каждый раз, когда выполняется задание cron, я хочу, чтобы столбец «VideoNumber» из таблицы «Профили» обновлялся с количеством видео, которое они загружали на сайт. Видеоинформация хранится в таблице под названием «Видео», и у каждого видео есть «OwnerID», чтобы идентифицировать пользователя, который его загрузил. Это соответствует столбцу «ID» в таблице «Профили».

Я также хотел, чтобы столбец «PhotoNumber» в таблице «Профили» обновлялся с количеством фотографий, загруженных одним и тем же пользователем - данные фотографий хранятся в столбце «Фотографии».

Может ли кто-нибудь помочь?

ответ

0

Вы делаете это неправильно. Обновление значений этих столбцов сразу после создания/удаления нового видео/фото. Вы можете приложить все в пределах транзакции, чтобы убедиться, что все будет хорошо:

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 сделать (т.е. значения. Пусть увеличение дескриптор базы данных/COUNT уменьшение Columns') все яснее

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 ; 
+0

Триггер INSERT работает. Какой триггер я буду использовать для удаления видео? – hohner

+0

Я понял, вы замените «+ 1» на «- 1» и «NEW.profile_id» на «OLD.profile_id». Спасибо – hohner

+0

P.S., если кто-нибудь читает эту проблему - я действительно рекомендую изменить PHP-код, как предложил Крозин. Триггеры в порядке, но, по моему мнению, они более легкие. Кроме того, к моему недоверчивости, некоторые хосты отказываются разрешить создавать триггеры phpMyAdmin с помощью команды SQL. Если вы не купите VPS или выделенный серверный пакет, конечно ... – hohner

0

Вы должны сначала ВЫБРАТЬ данные из этих двух таблиц, назначить определенные данные в INSERT и передать их.

+0

ОП хочет обновить таблицу профилей. –

Смежные вопросы