循环和更新数据

时间:2015-04-15 07:40:58

标签: php mysql email loops while-loop

好吧,我正在尝试向我的数据库中有“保留代码”的用户发送电子邮件并发送电子邮件。但我需要同时发送所有这些内容然后更新表格。

当我测试下一个脚本时,它只发送和更新一行,它不会进行循环。

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);

}

2 个答案:

答案 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))