PHP网站没有正确更新记录[重复]

Posted

技术标签:

【中文标题】PHP网站没有正确更新记录[重复]【英文标题】:PHP web site not updating records correctly [duplicate] 【发布时间】:2018-11-12 03:03:15 【问题描述】:

您好,我有以下代码:

        $sql_cadets = "SELECT cadet_unique FROM cadets";
        $query_cadets = mysqli_query($db,$sql_cadets);

        $sql_assets = "SELECT * FROM assets";
        $query_assets = mysqli_query($db,$sql_assets);

        while ($row_assets = mysqli_fetch_array($query_assets)) 

            $assigned = false;

            while ($row_cadets = mysqli_fetch_array($query_cadets)) 

                if (($row_assets['asset_assigned_to'] == '') && ($assigned == false)) 

                    $assigned = true;

                    $query = $connection->prepare("INSERT INTO `assignations` (`asset_unique`, `assigned_to`, `assigned_for`, `date_assigned`, 
                        `date_expected`) VALUES (?, ?, ?, NOW(), ?)");
                    $query->bind_param("ssss",$row_assets['asset_unique'],$row_cadets['cadet_unique'],$_GET['evtid'],$_GET['dateexpected']);
                    $query->execute();
                    $query->close();

                    $query = $connection->prepare("UPDATE `assets` SET `asset_assigned_to` = ?, `asset_assigned_for` = ?, `asset_assigned_date` = NOW()
                        WHERE `asset_unique` = ?");
                    $query->bind_param("sss", $row_cadets['cadet_unique'], $_GET['evtid'],$row_assets['asset_unique']);
                    $query->execute();
                    $query->close();

                

            
        
    ?>

它的目的是遍历数据库中的每个资产,然后为每个资产循环遍历每个学员,并为该学员分配该资产(如果尚未分配)。出于某种原因,php 页面确实插入到assignations 表中,但具有相同的资产和两个不同的学员。我在谷歌和堆栈溢出上查找了这个,我发现了一个常见的问题,那就是 mysqli_fetch_array 应该循环而不是只存在一次,但我已经修复了它,但它仍然失败。当它将这些放入表中时,会发生什么之后它应该更新assets 表。我有三个资产,分别命名为 TSK10LTSK11LTSK13L 作为它们的资产唯一字段,但系统仅将 TSK10L 分配给分配表中定义的两个学员,但只为一项资产分配一个学员。我已经广泛寻找答案,但似乎没有人遇到像我这样的问题。我正在尝试为迫切需要的当地海军学员单位设计一个 Intranet 解决方案。

【问题讨论】:

【参考方案1】:

你应该在$sql_assets = "SELECT * FROM assets";中使用where uniq_field

【讨论】:

谢谢托博克。我能够通过将资产获取数组切换到另一个 while 循环来解决该问题,然后将资产查询放入学员 while 循环中。我不知道它为什么会起作用,但我感觉它与asset_assigned_to 没有刷新其对学员查询的值有关....

以上是关于PHP网站没有正确更新记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP表单发送正确,但我没有收到电子邮件[重复]

为啥 Laravel 网站在 web.php 中没有走正确的路线?啥是自动加载 static.php?

PHP中的数字格式不正确[重复]

网站网址可以在有或没有 index.php 的情况下访问 [重复]

php 如何在页面刷新时不重复操作数据库?

如何从 WordPress 网站 URL 中删除 index.php [重复]