在我的php站點管理員必須每週更新站點中的內容。如果他忘記更新數據,我想向他發送電子郵件警報。怎麼可能?是否有可能從後端發送郵件。我GOOGLE了,我得到了我們可以寫觸發器。但我不知道該怎麼做。有人請幫助我。如何在php中編寫觸發器mysql
回答
如果您的虛擬主機允許您執行計劃任務,您也可以在沒有觸發器的情況下執行此操作。您可以定期運行一個php腳本來檢查數據庫併發送電子郵件。
如果在Linux上託管,預定作業稱爲「cron」作業。根據提醒的緊急程度,這項工作每週可以運行1到2次。 PHP scrpt還可以保存發送的電子郵件提醒日誌。 – 2013-03-16 11:37:51
@Marc Audet ..謝謝。但是,你能幫我解決一下如何做這個工作。這是我第一次做這樣的工作。 – Ammu 2013-03-23 04:24:38
MySQL的觸發器語法
爲了創建使用CREATE TRIGGER語句的觸發器。下面舉例說明CREATE TRIGGER語句的語法:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON table_name
FOR EACH ROW
BEGIN
...
END
讓我們來看看上面的語法的更多細節。
您將觸發器名稱放在CREATE TRIGGER語句之後。觸發器名稱應遵循命名約定[觸發時間] [表名] [觸發事件],例如before_employees_update。
觸發激活時間可以是BEFORE或AFTER。您必須在定義觸發器時指定激活時間。如果您希望在對錶進行更改之前處理操作,並且在進行更改之後需要處理操作,請使用BEFORE關鍵字。
觸發事件可以是INSERT,UPDATE和DELETE。這些事件會導致觸發器被調用。一個觸發器只能被一個事件調用。要定義由多個事件調用的觸發器,您必須定義多個觸發器,每個事件一個觸發器。
觸發器必須與特定的表相關聯。沒有表格觸發器將不存在,因此您必須在ON關鍵字之後指定表格名稱。
SQL代碼位於BEGIN和END關鍵字之間。
OLD和NEW關鍵字可幫助您更有效地開發觸發器。在您更改數據之前,OLD關鍵字指的是現有記錄,更改數據之後NEW關鍵字指向新行。
MySQL的觸發例如
讓我們開始在MySQL創建觸發器來審覈員工表的變化。
首先,我們的員工表中我們的MySQL數據庫示例如下:
其次,我們創建了一個新的表名爲employees_audit保持的員工記錄的變化。以下腳本創建employee_audit表。
CREATE TABLE employees_audit (
id int(11) NOT NULL AUTO_INCREMENT,
employeeNumber int(11) NOT NULL,
lastname varchar(50) NOT NULL,
changedon datetime DEFAULT NULL,
action varchar(50) DEFAULT NULL,
PRIMARY KEY (id)
)
第三,我們創造一改之前是給員工記錄所做要調用的BEFORE UPDATE觸發器。
DELIMITER $$
CREATE TRIGGER before_employee_update
BEFORE UPDATE ON employees
FOR EACH ROW BEGIN
INSERT INTO employees_audit
SET action = 'update',
employeeNumber = OLD.employeeNumber,
lastname = OLD.lastname,
changedon = NOW();
END$$
DELIMITER ;
如果你看一看模式,你會看到員工桌下before_employee_update觸發如下:
現在是時候更新員工記錄,如果觸發測試真的被調用。
UPDATE employees
SET lastName = 'Phan'
WHERE employeeNumber = 1056
要檢查是否觸發了UPDATE語句調用,我們可以通過下面的查詢查詢employees_audit表:
SELECT *
FROM employees_audit
以下是查詢的輸出:
正如您所看到的,我們的觸發器真的被調用,因此我們在employees_audit表中創建了一條新記錄。
在本教程中,您已學習如何在MySQL中創建觸發器。你已經寫了一個觸發器來審計僱員表的變化。
- 1. 如何編寫觸發器?
- 2. 如何在mysql中觸發器上編寫業務規則
- 3. Mysql觸發器或PHP中的編碼?
- 4. 如何編寫觸發器以中止MYSQL中的刪除?
- 5. 如何編寫遞歸觸發器
- 6. 如何寫多條件觸發在MySQL
- 7. 如何在mysql中創建觸發器?
- 8. PHP的MySQL觸發器 - 如何傳遞變量來觸發?
- 9. 如何在sql server 2005中編寫插入觸發器?
- 10. 如何在Verilog Pro中編寫基本觸發器?
- 11. 如何在MS Access中編寫觸發器
- 12. 我在哪裏寫MySQL觸發器
- 13. 如何寫觸發器?
- 14. 如何在觸發器中觸發2個寫操作
- 15. 如何編寫MySQL觸發器將行插入另一個表中?
- 16. 在MySQL觸發器更改值與PHP?
- 17. WPF XAML如何爲數據網格編寫觸發器或多觸發器?
- 18. 如何編寫觸發器更新另一個表中的行?
- 19. MYSQL - 觸發器
- 20. 可以用Java編寫MySQL觸發器或存儲過程嗎?
- 21. 編寫觸發器時的變異表
- 22. 需要編寫一個觸發器
- 23. 編寫的SQL Server觸發器 - 錯誤
- 24. 在mysql中編輯觸發器管理器
- 25. mysql觸發器到oracle觸發器
- 26. 如何在mysql中的表中插入數據後觸發一個觸發器
- 27. 從MySQL觸發器調用PHP函數
- 28. 需要觸發器的幫助php/mySQL
- 29. 通過PHP創建mysql觸發器?
- 30. 如何寫取代更新? - 觸發器
你的問題不清楚。你想只是安排一封電子郵件,或者想要定期發送某種報告?它是否與數據庫相關,如果是,什麼樣的數據庫(某些答案假設爲MySQL)? – core1024 2013-03-16 12:02:57
簡單的PHP腳本,每週運行幾次,檢查最新的created_at或updated_at字段在你的表中與帖子,如果> = 7天發送郵件是最簡單的方法 – san4o 2013-03-17 09:44:34
你是否想要一個基於CodeIgniter的解決方案,作爲一個cron作業? – 2013-03-23 10:34:35