好吧,我正在尝试向我的数据库中有“保留代码”的用户发送电子邮件并发送电子邮件。但我需要同时发送所有这些内容然后更新表格。
当我测试下一个脚本时,它只发送和更新一行,它不会进行循环。
while ($result25 = mysqli_query ($con,"SELECT * FROM santaterra WHERE Fecha='$today' AND Status='Reserved'"))
{
$row25 = mysqli_fetch_array($result25);
$username25=$row25['Solicitud'];
$result = mysqli_query($con,"SELECT * FROM users WHERE Usuario = '$username25'");
$row = mysqli_fetch_array($result);
$nuevosaldo = $misaldo - $precio;
mysqli_query($con,"UPDATE users SET Value='$nuevosaldo' WHERE Usuario='$username25'");
mysqli_query($con,"UPDATE santaterra SET Status='Pagado' WHERE Solicitud='$username25'AND Fecha='$today'");
$header = 'From: ' . $cuenta . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$mensaje = " This is an example\r\n";
mail($username25, $asunto, utf8_decode($mensaje), $header);
mysqli_close($con);
}
答案 0 :(得分:1)
这是错误的:
while ($result25 = mysqli_query ($con,"SELECT * FROM santaterra WHERE Fecha='$today' AND Status='Reserved'"))
你的循环永远不会结束,因为你一遍又一遍地做同样的查询。
您需要执行一次查询,然后获取行,直到不再有:
$result25 = mysqli_query ($con,"SELECT * FROM santaterra WHERE Fecha='$today' AND Status='Reserved'");
while ($row25 = mysqli_fetch_array($result25);) {
...
除此之外,您应该使用预准备语句来避免sql注入,并且您应该在sql中使用JOIN
,这样您只需要在循环中执行一个查询而不是另一个查询。
答案 1 :(得分:0)
你的while语句应该是:
while ($row = mysqli_fetch_array($result))