Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 运行更新查询MySQL时,所有数据都变为空_Php_Mysql_Database_Codeigniter - Fatal编程技术网

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

Php 运行更新查询MySQL时,所有数据都变为空,php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,我对mysql查询更新有一个问题,我觉得这太奇怪了。我使用查询中的Where子句在代码中运行Update查询。但是,当我停止该查询时,表中的所有数据都将变为NULL,这不仅仅是在Where子句中包含的数据中,而是在所有表中 这是我的代码: $book = json_decode($this->input->post('stringify')); foreach ($book as $row) { $data = array( 'price' =&

我对mysql查询更新有一个问题,我觉得这太奇怪了。我使用查询中的
Where
子句在代码中运行Update查询。但是,当我停止该查询时,表中的所有数据都将变为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
子句中的数据。可能是服务器导致了这个问题,或者是任何可能导致这个问题的原因。我希望有人能告诉我为什么会这样。谢谢。

也许试试这个

$this->db->update('mytable', $data, "id = 4");
因此,您可以将WHERE子句传递到update函数中 我建议您构建WHERE子句,将其分配给变量,然后将其作为第三个参数提供给update函数

希望这有帮助,也许试试这个

$this->db->update('mytable', $data, "id = 4");
因此,您可以将WHERE子句传递到update函数中 我建议您构建WHERE子句,将其分配给变量,然后将其作为第三个参数提供给update函数


希望这有助于

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

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

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


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

是否定义了
$id
当我看不到完整的代码时,很难看到,但您有:update where id=something查看echo的上次查询$this->DB->last_query()@Ghost是的,当然,
$id
是defined@AndersKink我编辑了我的问题。
$id
defined?当我看不到完整的代码时很难看到,但是你有:updatewhere id=something通过echo$this->db->last_query()查看最后一个查询@Ghost是的,当然,
$id
是defined@AndersKink我编辑了我的问题如果我以前用过我的代码,而我用过你的代码,有什么不同?如果我用这个有什么好处吗?@Antonio Hey man这只是一种方法,可以100%确保你正在根据你给它的3个参数更新你的记录,就像你知道表、数据和WHERE子句一样,因此,如果它仍然不起作用,那么您的WHERE子句可能是错误的,我可以在第三个参数中使用数组数据吗?您可以这样做$this->db->update('mytable',$data,array('id'=>$id))@Antonio如果我以前用过我的代码和你的代码有什么不同?如果我用这个有什么好处吗?@Antonio Hey man这只是一种方法,可以100%确保你正在根据你给它的3个参数更新你的记录,就像你知道表、数据和WHERE子句一样,因此,如果它仍然不起作用,那么您的WHERE子句可能是错误的,我可以在第三个参数中使用数组数据吗?您可以这样做$this->db->update('mytable',$data,array('id'=>$id))@安东尼奥