php - 遍历数据库并使用 foreach 循环更新字段

标签 php mysql

我正在尝试对表中的小数进行四舍五入,并使用新的四舍五入值更新同一个表中的另一个字段,但我似乎无法破解它。

舍入脚本完美运行,但我无法尝试运行舍入脚本并相应地更新数据库。

该表包含超过 10,000 个条目,因此我只请求特定给定日期的数据,一次缩小到大约 1,200 个条目...

这是我的 foreach 循环(它自己运行良好),但这不起作用:

<?php
include("XXXX");
$cxn = mysqli_connect($host,$user,$password,$dbname)
    or die ("Couldn't connect to server.");
$query = "SELECT `sub_hrs`, `id` FROM `attend` WHERE `date` = '$date'";
$result = mysqli_query($cxn,$query)
    or die ("Couldn't execute query.");

while($row = mysqli_fetch_assoc($result))
{
    extract($row);  
    $n = array($sub_hrs);
    foreach($n as $i) {
        $new[] = (fmod($i, 1) > 0.5 
                ? sprintf("%2.f", (float) (int) $i + 0.5) 
                : sprintf("%2.f", (float) (int) $i)) . PHP_EOL; 
        $mysql_query("UPDATE `attend` SET `total_hrs` = $new WHERE `id` = $id");
        }
}

最佳答案

你在下面的行中分配了一个数组 $new[]。

  $new[] = (fmod($i, 1) > 0.5 
            ? sprintf("%2.f", (float) (int) $i + 0.5) 
            : sprintf("%2.f", (float) (int) $i)) . PHP_EOL; 

但是在查询中,您只传递了 $new 变量,这将不起作用,因为您不会在 $new 变量中获得任何值。

    $mysql_query("UPDATE `attend` SET `total_hrs` = $new WHERE `id` = $id");

关于php - 遍历数据库并使用 foreach 循环更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31810170/

相关文章:

php oop 从数据库中选择数据

php - 想在swift 4中通过php api上传图片

mysql - 限制最小最大范围值的sql查询语法

mysql - 在 MySQL 中的存储过程结束时删除临时表

javascript - 如何减少从 PHP 获取信息的带宽大小?

php - 在 Mysql 中按精确词搜索字符串

php - 更新 MySQL 文本字段行时生成不需要的反斜杠

php - 使用军械测量东向和北向系统查找最接近给定邮政编码的邮政编码

php - Laravel 5.2 中 Select 语句中的子查询

php - 插入另一个表中的数据以及文本框和复选框中的数据以创建新记录