[英]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.