这两种状况都不太好,艾玛须要明确的知道问题出在哪里,并修复它。 php
1. 顾客会收到空邮件是由于发送促销广告时艾玛并无填写内容,不当心按下了发送键,致使邮件发出去了,可是没有任何内容。
同理,顾客登记邮箱时也可能并无填写内容,可是却成功登记空的,甚至错误的内容,因此要对这些这些数据进行验证。 mysql
//若是姓名和邮箱都是空的,强制退出。 if(empty($name) && empty($email)) { exit('请填写姓名 和 邮箱'); } //若是姓名 或者 邮箱都是空的,强制退出。 else if(empty($name) || empty($email)){ exit('请填写姓名 或者 邮箱'); }
2. 而顾客收到多条邮件是由于相同的邮件地址登记了屡次,因此艾玛发送促销广告时,重复的邮件也发送过去了。 sql
解决办法是顾客登记时须要先检查邮件是否已经存在了。//执行SQL语句。 $query = "SELECT * FROM email_list WHERE email = '{$email}'"; $result = mysqli_query($dbc,$query) or die('执行SQL语句出错'); $row = mysqli_fetch_assoc($result); //若是查询到有记录了,强制退出。 if($row) { exit('您已经登记了邮件了'); }
3. 对于以前的重复邮件,删除 顾客重复的邮件时,不能经过邮件地址来删除,这样作的话,会把全部重复的邮件一并删除,因此须要修改数据库表,创建惟一值,删除经过惟一值删除。 数据库
//修改数据库表,创建惟一值。 ALTER TABLE email_list ADD id INT NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY (id);修改删除方式为选择式删除。
<?php //定义常量,链接数据库,并设置编码。 define('HOST','localhost'); define('USER','root'); define('PWD','root'); define('DB','elvis_store'); $dbc = mysqli_connect(HOST,USER,PWD,DB) or die('链接数据库失败'); mysqli_set_charset($dbc,"utf8"); //若是提交了删除请求,删除对应id的顾客资料 if(isset($_POST['submit'])) { $id = $_POST['id']; foreach($id as $key){ $query = "DELETE FROM email_list WHERE id ='{$key}'"; $result = mysqli_query($dbc,$query) or die('执行SQL语句出错'); echo '邮件编号:'.$key.' 删除完毕<br />'; } } // 列出顾客邮件列表 echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'; $query = "SELECT * FROM email_list"; $result = mysqli_query($dbc,$query) or die('执行SQL语句出错'); while($row = mysqli_fetch_assoc($result)){ echo '<input type="checkbox" name="id[]" value="'.$row[id].'"/>'.$row[name]." ".$row[email].'<br />'; } echo '<input type="submit" name="submit" value="删除选中邮件" /></form>'; ?>