【问题标题】:Incorrect value written to mysql database写入mysql数据库的值不正确
【发布时间】:2014-02-09 17:28:38
【问题描述】:

我正在尝试将值写入数据库。一切似乎都很好,除了一个值神秘地不正确。我就是想不通。

在这里使用 codeigniter 是我的控制器:

$sample_id = $this->input->post('sample_id');
$culture_id = $this->input->post('culture_id');
$sample_name = $this->vial_model->get_name($culture_id);
$box_id = $this->input->post('boxid');

$db_data['boxid'] = $box_id;
$db_data['taskid'] = $sample_id;
$db_data['projectid'] = $culture_id;
$vial_id = $this->vial_model->create($db_data);

$vial_link = '<a href="'.base_url('freezer_vial/view/'.$culture_id.'/'.$sample_id.'/'.$vial_id).'" >'.$sample_name.'</a>';

让我们假设$sample_id 的值是158(或任何数字),我可以将此值回显到视图以确认。

输出到视图的锚链接如预期的那样包含158。但是,$db_data['taskid'] 的值始终为127,并按此方式插入到数据库中。我不知道为什么。其他一切正常。

这是模型:

public function create($data)
{
    $insert = $this->db->insert('vial', $data);
    if($insert)
        return $this->db->insert_id();
    else
        return false;
}

【问题讨论】:

  • 您是在 create() 中执行 print_r 还是打印最后一个查询?
  • 请发布您的表结构,或至少列类型
  • @Drdavidpier 你在哪里声明了 $db_data 数组..?您是否在代码中将其指定为数组?

标签: php mysql codeigniter


【解决方案1】:

数据库表中包含sample id 值的列可能已定义为tinyint。另见https://stackoverflow.com/a/16684301/282073

您可能希望更改列类型以确保每次新的插入或更新都不会更改数据。实例可以在另一个答案https://stackoverflow.com/a/13772308/282073

中找到

更改表的官方文档可以从 http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

【讨论】:

  • 是的,它是 tinyint。不知道那是怎么到那里的,但我没有考虑去寻找它。谢谢一百万!
  • @Drdavidpier 你在哪里声明了 $db_data 数组?
猜你喜欢
  • 2012-04-14
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 2019-11-16
  • 2019-03-25
相关资源
最近更新 更多