2011-04-21 6 views
4

データベースにレコードが追加されたときに実際にメールを送信したり、ユーザーに何らかの通知をしたりしたいと思っています。それは可能ですか? ON INSERTトリガのように、私はいくつかのPHPを実行する?MySQLインサートでPHPを実行することは可能ですか?

+4

なぜこのようにする必要がありますか?あなたはPHPコードから挿入されることはありません..? – Shameer

+0

@Shameer、私はWordPressプラグインを使用していますが、わかりませんが、これがどこで処理されているのか把握するのに非常に時間がかかります。 –

+0

あまり時間がかかりません。どのコードがdbに挿入されているかを調べるには、プラグインディレクトリを確認してください。その後、正常に挿入されたときにmail関数を記述します。 – Shameer

答えて

2

挿入が成功しているかどうかを確認してから、顧客にメールを送信してください。

3

mysqlイベントでPHPスクリプトを実行することはできません。

PHPの最後でこれを行う必要があります。

insertコマンドが正常に実行され、メールを送信しているかどうかを確認します。

1

あなたはmysqlのクエリでPHPを実行するカントしかし、あなたは、クエリが正常に行われたかどうかを確認してから、誰か、mysql_query()booleantrueまたはfalse)を返します郵送することができます。あなたは、PHPを使用している場合は、のは、それは正しい方法を使用しましょう。

if(mysql_query('// your query here')){ 
    //mail someone 
} 
1

しかしMySQLのsys_exec UDFをインストールすることによってトリガMySQLの内部から外部プログラムを実行することが可能である)、それを行うためのオーバーヘッドだと思われますそう。挿入を行うPHPがMySQLの通知をトリガーするのはなぜですか?その時点でデータを入力したことを知っていますか?

+0

私はWordPressプラグインを使用していますが、これはどこで処理されるのか分かりません...コードを掘り下げるには時間がかかります –

+0

私はこのようなMySQLに変更を加えて、トリガーを作成して外部プログラムを呼び出すエラーは、プラグインのトラフコードを掘るよりもずっと面倒です。 –

0

データベースの挿入/変更/削除に関する通知(電子メールなど)を生成する最も簡単で簡単な方法は、データベースの変更を実行しているスクリプトから行うことです。

<?php 
$res = mysql_query('INSERT INTO `table` (`field1`) VALUES ("One")'); 
if($res){ 
# Send Notification 
} 
?> 

あなたが(何らかの理由で)データベース操作を自分で実行していない場合には、それに失敗するか、(毎週、毎日、毎時間)、時限要約を実行できるようにしたい、あなたがする必要があるだろうCron Jobのようなものを使ってデータベースをポーリングし、変更をチェックしてください。

<?php 
# A file containing an integer which is the Highest ID in the table 
$indexFile = 'lastIndexID.txt'; 
# Get that Highest ID from the file, if it exists 
$lastIndex = 0; 
if(file_exists($indexFile ) 
    $lastIndex = (int) file_get_contents($indexFile); 
# Check the Database 
$res = mysql_query('SELECT `id` FROM `table` ORDER BY `id` DESC LIMIT 1'); 
if($res && mysql_num_rows($res)==1){ 
    $row = mysql_fetch_assoc($res); 
    # Check if the ID has increased (ie new rows added) 
    if($row['id']>$lastIndex){ 
    # Send Notification 
    # The number of New Rows will be the difference between $row['id'] and $lastIndex 
    # Update the Index File 
    file_put_contents($indexFile , $row['id']); 
    } 
}else{ 
# An Error Occurred 
} 
?> 
関連する問題