嗨,我正在尝试使用 PHP for 循环更新具有相同行 ID 的数据库表行,但当我 ECHO 更新查询时,它仅使用最后一次迭代数据更新数据库表中的所有行,它在每个中显示正确的更新代码下面的迭代我已经包含了代码和必要的屏幕截图
PHP For循环代码
if (!empty($_POST['cycleStartDate']) && !empty($_POST['mainSystemLink']) && !empty($_POST['paymentMethod'])) {
$invoice_stat = 'no';
// Assuming you have the initial payment date
// If payment method is monthly, add 1 month to the current date for the next iteration
if ($paymentMethod == 'monthly') {
$description = $_POST['mainSystemLink']; // Assuming the description is the same for all iterations
$amount = $_POST['payment']; // Assuming the amount is the same for all iterations
$aId = $_POST['AutoId']; // Assuming the AutoId is the same for all iterations
$cycleStartDate = $_POST['cycleStartDate'];
for ($i = 0; $i < 12; $i++) {
// Construct the query
$query = "UPDATE `hosting_payment` SET `payment_date` = '$cycleStartDate', `description`='$main_sys_link', `amount`='$payment', `payment_method`='$paymentMethod' WHERE `project_id`='$proj_id'";
// Execute the query
$result = mysqli_query($con, $query);
// Update paymentDate for the next iteration
$cycleStartDate = date('Y-m-d', strtotime($cycleStartDate . ' +1 month'));
echo $query;
}
}
更新查询回显输出
59Record updated successfullyUPDATE `hosting_payment` SET `payment_date` = '2024-01-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-02-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-03-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-04-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-05-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-06-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-07-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-08-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-09-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-10-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-11-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'UPDATE `hosting_payment` SET `payment_date` = '2024-12-05', `description`='www.dasisprinters.com1' , `amount`='30000', `payment_method`='monthly' WHERE `project_id`='59'
数据库截图
请你们检查一下并让我知道必要的修复措施
感谢您宝贵的时间
在你阅读这个答案之前,让我提醒你,你的代码很容易受到 SQL 注入,并且非常不安全,用户可能会传递恶意脚本作为他们发布的值,然后在你的数据库更新中执行,从而对你的系统造成损害。
那个
WHERE `project_id`='$proj_id'
指定
project_id
等于您的 $proj_id
的所有记录都将相应更新。如果您需要通过行号来区分它们,那么您可以使用变量,例如
set @rn = 0;
update yourtable set yourfield = (@rn := @rn + 1)
where `project_id` = 59