繁体   English   中英

while循环以更新数据库中的日期仅更新第一行?

while loop to update dates in DB only updates first row?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我不知道为什么这行不通。


function query($sql) {

     $this->result = @mysql_query($sql, $this->conn);

     return($this->result != false);

}

function convert() { $this->db->open(); $sql_update = ""; $this->db->query("SELECT * FROM ACCOUNTS "); $str = ''; while ($row = $this->db->fetchassoc()) { $jobNum = $row['JOBNUMBER']; $old_date = $row['INSTALLDATE']; $new_date = date("Y-m-d", strtotime($old_date)); $sql_update = "UPDATE ACCOUNTS SET INSTALLDATE='$new_date' WHERE JOBNUMBER='$jobNum' "; //$this->db->query($sql_update) or die($this->response->throwResponseError(MSG_DATABASE_ERROR . mysql_error())); $str .= $jobNum . " -- " . $new_date . "
"; }

    return $str;
}

如果我在注释掉该行的情况下运行它,它将返回我想要的所有结果。 但是,当我取消注释它实际运行更新的行时,它将更新第一条记录并停止循环。 为什么?

1 个回复

当您运行更新,它在无效的隐藏声明左撇子db和与之相关的结果。

db->query("SELECT …") -- creates the handler

-- 1st iteration
db->fetchassoc() -- fetches the first row
db->query("UPDATE …") -- creates another handler and destroys the old one

-- 2nd iteration
db->fetchassoc() -- no rows returned by `UPDATE`, nothing to fetch

使用单个语句可以更轻松地完成您想做的事情:

UPDATE  accounts
SET     installed = DATE_FORMAT(STR_TO_DATE(installed, @current_format_string), '%Y-%d-%m')

,其中@current_format_string是您现在的日期格式。

更新:

尝试运行此查询:

UPDATE  accounts
SET     installdate = DATE_FORMAT(STR_TO_DATE(installdate , '%m/%d/%Y'), '%Y-%d-%m')

在运行UPDATE查询之前,您可能需要使用SELECT检查结果:

SELECT  DATE_FORMAT(STR_TO_DATE(installdate, '%m/%d/%Y'), '%Y-%d-%m')
FROM    accounts
4 PHP While 循环更新在第一行停止

我做了一个 while 循环,它会判断交易历史记录中是否有项目,并在交易结束时将其放回库存中,但问题是。 它获取一个错误,称为 未捕获的错误:在 bool 中调用成员函数 fetch_assoc() 所以我一一尝试了查询并且它有效。 我尝试试验并评论另一个查询并添加一个计数器++; 判断循环是否 ...

2021-01-06 03:33:32 1 45   php
5 While循环仅传递第一个sql行

源代码显示了LIMIT要求的16个项目。 但是,所有内容仅是“类别”列中的第一项。 我如何才能显示列的前16行,而不仅仅是第一行。 ...

6 While循环仅返回第一行值

对于我的树类别,我使用以下代码,但似乎有问题,因为它仅返回第一行的值: 任何想法我在做什么错以及如何解决这个问题? ...

7 仅更新1行While循环错误

我仍然对向mysql ad PHP编写查询还不陌生,所以我敢肯定这是一个新手错误,但我无法弄清楚。 当我用Echo显示变量时,它们会以不同的值显示,但是当我尝试更新时,它仅更新一行。 说错之后:-密钥“ PRIMARY”的条目“ 654-657”重复 我对While LOOP有 ...

8 while循环内的while循环仅返回第一行

我试图使数组充满不同的对象。 我有一组页面和一组问题。 页面是组,问题属于它们。 我想查询第一页,然后找出其中有多少个问题。 之后,为每个问题创建对象并将其附加到特定页面。 但是可悲的是,每页只返回一行... ...

9 While Loop 仅在与 AJAX PHP 一起使用时才更新第一行数据

我的 PHP 代码中有一个 while 循环,它获取帖子的数据,例如海报名称、时间等。 问题是,当我尝试从客户端更新任何数据时,它仅适用于显示的第一行。 这个问题只在我使用AJAX的时候出现,使用简单的表单不会触发这个问题。 真实场景:当我喜欢第一篇文章时,一切正常,但是当我喜欢第二篇文章时,它大 ...

2020-03-10 11:38:02 1 122   php/ ajax
10 SelectedItem仅更新WPF中数据库的第一行

我正在开发一个应用程序,允许用户将他们公司的员工详细信息输入到数据库中。 到目前为止,我正在尝试使用WPF并尝试在使用Entity Framework时在我的应用程序中实现MVVM。 我正在创建一个Master-Detail应用程序,并且一直在研究如何使用MVVM来实现这一点,因为我对这 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM