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