【问题标题】:All data is become NULL when run Update Query MySQL运行更新查询 MySQL 时所有数据都变为 NULL
【发布时间】:2017-09-11 05:34:55
【问题描述】:

我的 mysql 查询更新有问题,我觉得这很奇怪。我在我的代码中运行 Update 查询,并在该查询中使用 Where 子句。但是,当我停止该查询时,我的表中的所有数据都变为 NULL,这不仅仅是在 Where 子句中包含的数据中,而是在所有表中。

这是我的代码:

$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 框架创建该查询。我只想知道为什么该查询会更新我表中的所有数据,而不仅仅是Where 子句中的数据。也许服务器会导致该问题或任何可能导致该问题的原因。我希望有人能告诉我为什么会这样。谢谢。

【问题讨论】:

  • 是否定义了$id
  • 当我看不到完整代码时很难看到,但是有你:更新 where id = something
  • 通过 echo $this->db->last_query() 查看最后一个查询;
  • @Ghost 是的,当然$id 已定义
  • @AndersKink 我编辑了我的问题

标签: php mysql database codeigniter


【解决方案1】:

如果没有与您用于 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);
   }
}

现在,只有当您拥有给定变量的值时,才会更新数据库数据。您可以使用更多验证,例如检查 id 是否为数字(根据您的数据库结构)或无效。

【讨论】:

    【解决方案2】:

    不妨试试这个

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

    所以你可以将你的 WHERE 子句传递给更新函数 我建议你建立 WHERE 子句,将其分配给一个变量,然后将其作为第三个参数提供给更新函数。

    希望对你有帮助

    【讨论】:

    • 如果我以前使用我的代码和我使用你的代码有什么不同?如果我用这个有什么好处吗?
    • @Antonio 嘿,伙计,这只是一种 100% 确保您正在根据您提供的 3 个参数更新记录的方法,就像您知道表中的数据和 WHERE 子句一样,所以如果它仍然不起作用,您的 WHERE 子句可能是错误的
    • 我可以在第三个参数中使用数组数据吗?
    • 你可以这样做 $this->db->update('mytable', $data, array('id' => $id)); @安东尼奥
    猜你喜欢
    • 2016-11-16
    • 2017-05-21
    • 2023-03-20
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2015-10-27
    相关资源
    最近更新 更多