Возможно ли выполнить PHP на MySQL вставке? - PullRequest
4 голосов
/ 21 апреля 2011

Я на самом деле хочу по почте или как-то уведомить пользователя, когда запись была добавлена ​​в базу данных.Это возможно?Как триггер ON INSERT, я выполняю PHP?

Ответы [ 5 ]

3 голосов
/ 21 апреля 2011

Невозможно выполнить сценарий PHP с событиями mysql.

Это необходимо сделать в конце PHP.

Проверьте, успешно ли выполнена команда вставки, и отправьте письмо.

2 голосов
/ 21 апреля 2011

Просто проверьте, успешна ли вставка, а затем отправьте письмо клиенту.

1 голос
/ 21 апреля 2011

Можно запускать внешние программы из триггеров MySQL, установив MySQL sys_exec UDF

Однако, похоже, что это накладные расходы. Почему вы заставляете MySQL вызывать уведомление, когда вставка выполняется с помощью PHP, и в этот момент вы знаете, что ввели данные?

1 голос
/ 21 апреля 2011

вы не можете выполнить php в запросе mysql, но вы можете проверить, был ли запрос выполнен успешно, а затем отправить кому-нибудь письмо, mysql_query() вернет boolean (true или false). если вы используете php, давайте использовать его правильно;)

if(mysql_query('// your query here')){
   //mail someone
}
0 голосов
/ 21 апреля 2011

Самый быстрый и простой способ создания уведомлений (электронных писем и т. Д.) О вставках / модификациях / удалениях базы данных - это выполнение сценария, выполняющего изменения в базе данных.

<?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
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...