【问题标题】:Script inserts the same values to the database脚本将相同的值插入数据库
【发布时间】:2015-04-06 01:01:42
【问题描述】:

当我运行这段代码时,我的 MySQL 表中更新了一些字段,但由于某种原因,它们的值都是相同的。

$query = $this->Connection_model->get_custom_db('sender')->get($sender_table);
foreach ($query->result() as $row) {
    $data = array(
            $sender_row => $row->$sender_row
    );
    $this->Connection_model->get_custom_db('receiver')->update($receiver_table, $data);
}

print_r($data) 返回:

数组 ( [大街] => Pantherstr。 ) 大批 ( [Strasse] => Minimalweg) 数组 ( [Strasse] => Blankeneser Weg )

我该如何解决这个问题?

【问题讨论】:

  • 结果是预期的。你有任何 id 列或唯一列吗?
  • 您还需要定义where 条件来确定在哪个条件下必须更新哪一行..

标签: php mysql arrays codeigniter


【解决方案1】:

对于 $row->sender_row 中的许多人来说看起来像 $:

$query = $this->Connection_model->get_custom_db('sender')->get($sender_table);
foreach ($query->result() as $row) {
    $data = array(
            $sender_row => $row->sender_row
    );
    $this->Connection_model->get_custom_db('receiver')->update($receiver_table, $data);
}

【讨论】:

  • 不,$row->$sender_row 应该是正确的。 $sender_row 是一个变量。
【解决方案2】:

您会发现,在您的所有行中,Strasse 字段将设置为 Pantherstr,然后到 Minimalweg,然后到 Blankeneser Weg。

所以您看到的是写入所有行的最终值。

我看不到你的 Where 在哪里。如果要更新特定行或行,则需要识别这些行。否则每次循环都会更新所有行。

【讨论】:

  • 有没有办法将这些字段添加到列中而不使用 Where to identify them?无论如何,它们只能从上到下列出。
  • 当您更新任何表中的列并且未指定任何 WHERE 条件来标识您希望更新的行时,所有行都将被更新。
  • 我认为可以运行一个循环来表示第一行获取第一个值,第二行获取第二个值等等......
  • 您实际上想要做什么?看起来您有两个不同的数据库...一个带有 Senders 表,另一个带有 Receivers 表!正如您自己的数据所显示的那样,一个发件人可以发送给许多收件人 - 您的发件人表中只有 3 个条目,而您的收件人表中只有 6 个条目......那么哪个收件人得到哪个发件人地址(Strasse)?更重要的是,为什么要将接收者地址设置为发送者地址?您尝试这样做的事实意味着您需要在发送者和接收者之间建立某种关系!
猜你喜欢
  • 2017-06-03
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 2012-11-10
  • 2015-06-13
  • 1970-01-01
  • 2020-07-10
相关资源
最近更新 更多