我有一个库存mySQL数据库。当“数量”等于或小于“最小”字段中的数字时,我需要向少数人发送一封电子邮件,提醒他们。
如果 “qty” 等于或小于 “min”,有没有人知道如何创建发送电子邮件的脚本 ?这可以在服务器端完成吗?
埃里克
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 | | | |
+--------------+--------------+--------+--------+-------------------+---------+
答案 0 :(得分:2)
我希望您的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='you@youremail.com';
$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脚本来完成这项工作,但您必须手动将浏览器指向脚本位置,或找出执行该脚本的另一种方法。
另外,请在没有任何语法编辑器的情况下动态地检查我的代码。