簡體   English   中英

在while循環內運行mysqli查詢

[英]running a mysqli query inside while loop

我有這個PHP代碼:

<?php 
//include database
include 'db.php';
//grab the emails from the database
$sql = "SELECT email FROM `emails`";
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result, MYSQL_ASSOC)){
    // update the database
    //sanitinzw
    $row = mysqli_real_escape_string($con, $row['email']);
    //mail the emails 
    $to      = $row;
    $subject = 'HELLOO';
    $message = 'alooooo';
    $headers = 'From: admin@admin.com' . "\r\n" .
               'Reply-To: admin@admin.com' . "\r\n" .
               'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);    
}

?>

它工作正常; 但是,當我向其中添加查詢時,僅將數據庫中的第一封電子郵件發送給它,就像它的樣子一樣。

<?php 
//include database
include 'db.php';
//grab the emails from the database
$sql = "SELECT email FROM `emails`";
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result, MYSQL_ASSOC)){
    // update the database
    //sanitinzw
    $row = mysqli_real_escape_string($con, $row['email']);
    //mail the emails 
    $to      = $row;
    $subject = 'hello';
    $message = 'aloooooo';
    $headers = 'From: admin@admin.com' . "\r\n" .
               'Reply-To: admin@admin.com' . "\r\n" .
               'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);    

    $sql = "UPDATE `emails` SET times_used = times_used + 1 WHERE email = '$row' ";
    $result = mysqli_query($con, $sql);
}

?>

由於某種原因,它只會更新數據庫中的第一封電子郵件,而當我嘗試回顯$ row時,只會回顯第一封電子郵件

謝謝您的幫助

您正在重寫$result變量,該變量也在while循環中使用。 第一次迭代后,將$result設置為更新查詢的結果,因此沒有其他行可以提取。

您可以編寫此代碼,例如:

$sql = "UPDATE `emails` SET times_used = times_used + 1 WHERE email = '$row' ";
$result2 = mysqli_query($con, $sql);

那應該起作用(如果沒有其他錯誤)。

不確定mysqli_real_escape_string作為函數存在...或者至少php.net對此不了解..此外,對於mysql_real_escape_string (我想您要使用的參數),參數會mysqli_real_escape_string

$row = mysql_real_escape_string($row['email'],$con);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM