php - 当 mySQL 字段等于某个值时发送电子邮件警报

标签 php mysql email function

我有一个库存 mySQL 数据库。我需要向一些人发送一封电子邮件,当“数量”等于或小于“最小”字段中的数字时提醒他们。

有人知道如何创建一个脚本来发送电子邮件,如果“数量”等于或小于“分钟”?这可以在服务器端完成吗?

埃里克

DATABASE NAME: _hero 

TABLE NAME:  CARTONS_CURRENT
+--------------+--------------+--------+--------+-------------------+---------+
| Column       |  Type        |  Null  |  Key   |  Default          |  Extra  |
+--------------+--------------+--------+--------+-------------------+---------+
| orig_time    | timestamp    |  No    |        | CURRENT_TIMESTAMP |         |
| type         | text         |  No    |        |                   |         |
| part_no      | varchar(20)  |  No    |  Prim  |                   |         |
| description  | varchar(75)  |  No    |        |                   |         |
| count        | varchar(2)   |  No    |        |                   |         |
| size         | varchar(30)  |  No    |        |                   |         |
| min          | int(7)       |  No    |        |                   |         |
| max          | int(7)       |  No    |        |                   |         |
| qty          | int(8)       |  No    |        |                   |         |
+--------------+--------------+--------+--------+-------------------+---------+

最佳答案

我希望你的 MySQL/PHP 位于 Linux 主机上...如果是这样,这是我的建议:

首先,创建一个 PHP 脚本来检查数据库,如果满足条件则发送电子邮件。请记住,在我的方法中,该脚本必须可由服务器执行,因为我们稍后将创建一个 cronjob 来运行该脚本

将/usr/bin/php 的值更改为您的 php 的路径(使用 whereis phpwhich php 来查找它)

#!/usr/bin/php
<?php
//connect to database
$dbconnect=new mysqli('localhost','username','password','_hero');
$result=$dbconnect->query("SELECT `qty`,`min`,`part_no` FROM `CARTONS_CURRENT` WHERE `qty`<=`min`");
//if there are any records matching this query we send an email listing each one using 'part_no' as the identifier in this case
if($result->num_rows>=1) {
   $email='<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c3baacb683baacb6b1a6aea2aaafeda0acae" rel="noreferrer noopener nofollow">[email protected]</a>';
   $subject = "PRODUCTS OUT OF STOCK";
   $message='One or more products are out of stock:\n\n';
   while($row=$result->fetch_assoc()) {
      $message.="{$row['part_no']}\n";
   }
   if(mail($email, $subject, $message)) {
      //mail successfully sent
   } else {
      //mail unsuccessful
   }
}
?>

保存/退出,并使文件可执行(chmod 700 或 777)

创建一个 cron 条目以每 5 分钟执行此脚本:

crontab -e

*/5   *   *   *   * /path/to/phpscript

如果您的 MySQL 不在 Linux 主机上和/或您没有设置可执行 PHP,您仍然可以使用上述 PHP 脚本来完成这项工作,但您必须手动将浏览器指向脚本位置,或者找出执行该脚本的另一种方法。

另外,请认真检查我的代码,因为我是在没有任何语法编辑器的情况下即时编写的。

关于php - 当 mySQL 字段等于某个值时发送电子邮件警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812219/

相关文章:

php - 以有限优惠获取汽车 Laravel

php - Codeigniter - 提交后验证失败时重新填充表单

php - 您如何在PHP中解析和处理HTML/XML?

php - echo 来自另一个文件中函数的 SELECT 查询的结果

php - CodeIgniter多维数组存储在mysql数据库单列中

php - 如何在 Eloquent 中创建后立即加载关系

php - 如何将多个复选框及其文本字段插入 MySQL 数据库

java - 使用 JavaMail API 通过 servlet 发送的电子邮件无法通过

php - 是否有用于 php 的高级开源 pop3 类?

Javascript:验证警报