Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 而循环更新数据库中的日期只更新第一行?_Php_Mysql_Loops - Fatal编程技术网

Php 而循环更新数据库中的日期只更新第一行?

Php 而循环更新数据库中的日期只更新第一行?,php,mysql,loops,Php,Mysql,Loops,我不知道为什么这行不通。 function query($sql) { $this->result = @mysql_query($sql, $this->conn); return($this->result != false); } 函数转换{ $this->db->open; $sql_update=; $this->db->querySELECT*FROM ACCOUNTS; $str=; 而$row=$this->db->fetchass

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

function query($sql) {

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

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

}
函数转换{ $this->db->open; $sql_update=; $this->db->querySELECT*FROM ACCOUNTS; $str=; 而$row=$this->db->fetchassoc{ $jobNum=$row['JOBNUMBER']; $old_date=$row['INSTALLDATE']; $new_date=dateY-m-d,strotime$old_date; $sql_update=update ACCOUNTS SET INSTALLDATE='$new_date',其中JOBNUMBER='$jobNum'; //$this->db->query$sql\u update or die$this->response->throwResponseErrorMSG\u DATABASE\u ERROR.mysql\u ERROR; $str.=$jobNum.-.$new\u date; }

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

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

当运行更新时,它会使数据库中的隐藏语句hander及其相关结果无效

UPDATE  accounts
SET     installed = DATE_FORMAT(STR_TO_DATE(installed, @current_format_string), '%Y-%d-%m')
使用一条语句可以更轻松地完成您要做的事情:

UPDATE  accounts
SET     installdate = DATE_FORMAT(STR_TO_DATE(installdate , '%m/%d/%Y'), '%Y-%d-%m')
,其中@current_format_string是当前日期的格式

更新:

尝试运行此查询:

SELECT  DATE_FORMAT(STR_TO_DATE(installdate, '%m/%d/%Y'), '%Y-%d-%m')
FROM    accounts
在运行“更新查询”之前,您可能需要使用“选择”检查结果:


那么,我最好将所有变量放入一个数组中,然后对每个变量执行一个操作?或者我如何修复它?太好了。我真的花了几个小时,看不出有什么干扰。非常感谢!@mlebrun15:真正更好的是,您在MySQL端执行此操作,如帖子所示。它会一直将值设置为null。您的变量是否已安装是的,这应该与列名相同,对吗?是的。你能现在发布表中包含的一些行吗?
SELECT  DATE_FORMAT(STR_TO_DATE(installdate, '%m/%d/%Y'), '%Y-%d-%m')
FROM    accounts