我有一个库存 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 php
或 which 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/