当函数第一次运行时,在mysql中更新了错误的数据

时间:2013-11-26 12:15:42

标签: php mysql codeigniter

function renew_status($propertyId){
   $code    =   '';
   $code    =   mt_rand(500000, 999999);
   $q   =   "UPDATE `ps_listings` SET 
                             `accessCode` = $code, 
                             `renew`    =   '0' 
                     WHERE `id` =   $propertyId ";
  mysql_query($q) or die(mysql_error());
  $this->db->select('accessCode')->from('ps_listings');
  $this->db->where(array('id' => $propertyId)); 
  $query = $this->db->get();
  $results = $query->result();
      return $results[0]->accessCode;
}

我正在通过codeigniter函数更新mysql表。第一次当我访问我的功能时,它会更新错误的数字,但如果我刷新页面,则更新正确的值。 return $ results [0] - > accessCode;给我这个代码893195.而在数据库中它保存997228.请帮帮我

3 个答案:

答案 0 :(得分:0)

1)使用mysql_affected_rows进行检查工作更新或否。 2)我认为刷新页面是错误的方式。使用Session拒绝双重更新。 3)用于在更新之前,之后和之后调试检索和打印accessCode    结果(UI)。

答案 1 :(得分:0)

试试这个

function renew_status($propertyId){
  $code    =   '';
  $code    =   mt_rand(500000, 999999);
  $data = array('accessCode' => $code, 'renew' => '0');
  $this->db->where('id',$propertyId);
  $this->db->update('ps_listings',$data);

  $this->db->select('accessCode');
  $this->db->where('id',$propertyId); 
  $query = $this->db->get('ps_listings');
  $results = $query->result_array();
  return $results[0]->accessCode;
}

答案 2 :(得分:0)

1)“id”列是唯一的而不是null?

2)以下代码返回什么:

echo count($results);