Php 遍历行,更新并发送电子邮件
我遇到了一个问题,迭代行,更新字段,然后根据日期发送电子邮件。我也可以让第一行发送电子邮件,但我不明白为什么我不能让其他行发送电子邮件。我可以显示有三行返回,但我不能发送三封电子邮件。代码如下,并提前感谢您的帮助Php 遍历行,更新并发送电子邮件,php,mysql,email,loops,for-loop,Php,Mysql,Email,Loops,For Loop,我遇到了一个问题,迭代行,更新字段,然后根据日期发送电子邮件。我也可以让第一行发送电子邮件,但我不明白为什么我不能让其他行发送电子邮件。我可以显示有三行返回,但我不能发送三封电子邮件。代码如下,并提前感谢您的帮助 <?php for($numOfRows = 1; $numOfRows > 0;){ $sql = "SELECT * FROM service WHERE boosterDate BETWEEN CURDATE() AND CUR
<?php
for($numOfRows = 1; $numOfRows > 0;){
$sql = "SELECT * FROM service WHERE boosterDate BETWEEN CURDATE() AND CURDATE() + INTERVAL 30 DAY";
if(!$result = $con->query($sql)){
die('There was an error running the query [' . $con->error . ']');
}
$numOfRows = $result->num_rows;
//%result->store_result();
$numOfRows = var_dump($numOfRows);
//echo $numOfRows;
//if($numOfRows > 0){
//var_dump($numOfRows);
while($row = $result->fetch_array()){
//Get all the rows and store them in an array
$firstQueryRows[] = $row;
}
foreach($firstQueryRows as $row){
//do a new query with $row
$serviceID = $row['serviceID'];
$patientID = $row['patientID'];
$serviceName = $row['serviceName'];
$price = $row['price'];
$quantity = $row['quantity'];
$boosterDate = $row['boosterDate'];
$totalPrice = $row['totalPrice'];
$rabiesTagNumber = $row['rabiesTagNumber'];
$microChipNumber = $row['microChipNumber'];
$rabiesDose = $row['rabiesDose'];
$rabiesVacType = $row['rabiesVacType'];
$rabiesVacExpDate = $row['rabiesVacExpDate'];
$rabiesSerialNumber = $row['rabiesSerialNumber'];
$rabiesManufacturer = $row['rabiesManufacturer'];
$rabiesVacDate = $row['rabiesVacDate'];
$rabiesVacDueBy = $row['rabiesVacDueBy'];
$licenseNumber = $row['licenseNumber'];
$isThisARabiesCert = $row['isThisARabiesCert'];
$vacDate = $row['vacDate'];
$email30 = $row['email30'];
$email60 = $row['email60'];
$email90 = $row['email90'];
//echo $serviceID . " ";
$sql = "UPDATE service SET email30 = 30 WHERE serviceID = $serviceID";
if(!$result = $con->query($sql)){
die('There was an error running the query [' . $con->error . ']');
}
}//End Foreach
//echo $patientID;
$sql = "SELECT * FROM service WHERE email30 = 30";
if(!$result = $con->query($sql)){
die('There was an error running the query [' . $con->error . ']');
}
while($row = $result->fetch_array()){
//Get all the rows and store them in an array
$firstQueryRows[] = $row;
$patientID = $row['patientID'];
//echo $patientID;
}
foreach($firstQueryRows as $row){
$sql = "SELECT * FROM patientInformation WHERE patientID = $patientID";
if(!$result = $con->query($sql)){
die('There was an error running the query [' . $con->error . ']');
}
}
while($row = $result->fetch_array()){
$firstQueryRows[] = $row;
$clientID = $row['clientID'];
$maleFemale = $row['maleFemale'];
$species = $row['species'];
$ageYears = $row['ageYears'];
$ageMonths = $row['ageMonths'];
$weight = $row['weight'];
$dogBreed = $row['dogBreed'];
$name = $row['name'];
$catBreed = $row['catBreed'];
$colors = $row['colors'];
$illnessLast30Days = $row['illnessLast30Days'];
$explainIllness = $row['explainIllness'];
//echo $clientID;
}
foreach($firstQueryRows as $row){
$sql = "SELECT * FROM clientInformation WHERE clientID = $clientID";
if(!$result = $con->query($sql)){
die('There was an error running the query [' . $con->error . ']');
}
}
while($row = $result->fetch_array()){
$firstName = $row['firstName'];
$lastName = $row['lastName'];
$address = $row['address'];
$city = $row['city'];
$zip = $row['zip'];
$phone = $row['phone'];
$cell = $row['cell'];
$state = $row['state'];
$email = $row['email'];
}
$to = $email;
$subject = "Just a friendly reminder from the Shot Spot";
$message = "Greetings " . $firstName . " " . $lastName . "\r\n" . "\r\n" . "\r\n" .
"Thank you for choosing the Shot Spot for all of your animals healthcare needs. This is a friendly reminder that
" . $name . " is ready for their booster on " . $boosterDate . "\r\n" . "\r\n" . "\r\n" .
"Thank you for choosing the Shot Spot";
$headers = 'From: info@txshotspot.com';
mail($to, $subject, $message, $headers);
}//end for loop
?>
您没有通过for循环进行评分,代码有点凌乱:p。 要发送三封电子邮件,请尝试以下方法:
for($numOfRows = 0; $numOfRows <= 3; $numOfRows++)
用于($numorrows=0;$numorrows感谢您的反馈。我想发送尽可能多的电子邮件,因为找到的行数不多。此查询中正好有三个,因此按您的设置方式设置for循环将无法正常工作。此外,我理解它的编码不是最好的。对于php编码仍然是新的。您能提供一些关于最佳wa的建议吗y来做我要找的。我有三个表,我正在将id匹配到所有三个表,同时还检查今天30天内的日期。此时,我需要向符合搜索条件的任何一行发送电子邮件。我可以发送一封,但这就是它的结尾。是的,我可以给你一些建议:是的,我可以给你一些建议。y可以吗你设置了三个表的结构,这样我就可以知道你在说什么了。既然你不知道要发送多少封电子邮件,那么While循环在这种情况下会很好地工作。我还注意到:你应该使用一个准备好的语句,或者在每个语句上更改代码,如下所示。下面是一个示例:旧代码:$sql=“SELECT*FROM clientInformation WHERE clientID=$clientID”;新代码:$sql='SELECT*FROM clientInformation WHERE clientID='。$clientID;祝您好运,如果行得通,请告诉我。