代码之家  ›  专栏  ›  技术社区  ›  Antonio

运行更新查询MySQL时,所有数据都变为空

  •  0
  • Antonio  · 技术社区  · 8 年前

    我对mysql查询更新有一个问题,我觉得这太奇怪了。我跑步 使用查询我的代码 Where 子句。但是,当我停止该查询时,表中的所有数据都变为NULL,而这不仅仅是包含在中的数据 哪里

    这是我的代码:

    $book = json_decode($this->input->post('stringify'));
    
    foreach ($book as $row)
    {
        $data = array(
                  'price' => $row->price,
                  'date_modified' => date("Y-m-d H:i:s"),
                  'modified_by' => $row->username
               );
    
        $this->db->where('id', $row->id);
        $this->db->where('book_id', $row->book_id);
        $this->db->update('book_availability', $data);
    }
    

    我使用codeigniter框架创建该查询。我只是想知道为什么这个查询会更新我表中的所有数据,而不仅仅是表中的数据

    2 回复  |  直到 8 年前
        1
  •  3
  •   BSB    8 年前

    如果没有与用于where条件的变量相关联的值,则可能发生这种情况

    在将数据插入数据库之前,最好先验证数据:

    foreach ($book as $row)
    {
      if(isset($row->id) && $row->id != '' && isset($row->book_id) && $row->book_id != '' ) {
        $data = array(
                  'price' => $row->price,
                  'date_modified' => date("Y-m-d H:i:s"),
                  'modified_by' => $row->username
               );
    
        $this->db->where('id', $row->id);
        $this->db->where('book_id', $row->book_id);
        $this->db->update('book_availability', $data);
       }
    }
    

        2
  •  0
  •   Devaux    8 年前

    也许试试这个

    $this->db->update('mytable', $data, "id = 4");
    

    我建议建立WHERE子句,将其赋给变量,然后将其作为第三个参数赋给update函数。

    希望这有帮助