我看到了MySQL数据库的奇怪行为。在使用codeigniter在数据库中插入行时,行不会持久但自动增量字段会递增。插入新行时,我可以看到增量。最糟糕的是,如果再次插入相同的数据(提交表单),它会被插入,我可以在数据库中看到该数据。
我的代码:
$sql = "INSERT INTO `users`(`first_name`, `country`, `username`, `password`, `email`, `ip_address`, `created_on`, `active`)
VALUES('".$adiData['first_name']."', '".$adiData['country']."', '".$username."', '".$password."', '".$email."', '".$ip_address."', ".$time.", 1)";
$this->db->query($sql);
还有一件事让我更加困惑,昨天我重新启动服务器并插入正常。现在今天早上我遇到了同样的麻烦。
请说出原因可能是什么?
答案 0 :(得分:1)
您需要有唯一的约束,数据冗余是一个非常大的问题,您不能使某些列唯一或可能是复合键,这取决于您的要求。
例如:
如果是用户表,则用户名必须是唯一的,因此不允许您插入冗余行。
答案 1 :(得分:0)
尝试使用codeigniter方式 对于前。
// get data from form
$data = array('name'=>$this->input->post('name'),
'email'=>$this->input->post('email'),
'contact'=>$this->input->post('contact'),
'address'=>$this->input->post('address')
);
$this->db->insert('tableName',$data);
如需更多阅读此http://w3code.in/2015/10/how-to-insert-and-select-data-from-database-in-codeigniter-beginner-guide/
答案 2 :(得分:0)
Codeigniter插入方法
$data = array(
'first_name' => $this->input->post('first_name'),
'country' => $this->input->post('country'),
'username' => $username,
'password' => $password,
'email' => $email,
'ip_address' => $ip_address,
'time' => $time,
);
$this->db->insert('users', $data);
并在config/database.php
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';//MySQL Username
$db['default']['password'] = '';//MySQL Password
$db['default']['database'] = '';//db name
并在config/autoload.php
$autoload['libraries'] = array('database');
确保变量不为空
编辑01
转到
database
,然后转到users
表。structure
。Change
字段前面的id
。答案 3 :(得分:0)
确保将createdOn字段类型设置为datetime,并检查传递给此字段的数据的格式。如果日期时间格式不正确,您可能会遇到此问题。