MySQL在插入行时表现得很奇怪

时间:2015-10-28 06:54:04

标签: php mysql database codeigniter

我看到了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);
  • 数据库和库中没有触发器。
  • 我已直接从数据库插入相同的数据,工作正常。
  • 没有依赖,我查了一下。
  • 我还检查了服务器细节,有足够的空间。
  • CI数据库函数返回成功,但数据库中不存在行。

还有一件事让我更加困惑,昨天我重新启动服务器并插入正常。现在今天早上我遇到了同样的麻烦。

请说出原因可能是什么?

4 个答案:

答案 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

转到

  1. PHPMYADMIN
  2. 选择您的database,然后转到users表。
  3. 点击顶部的structure
  4. 点击Change字段前面的id
  5. 然后出现 AI(自动增量)
  6. 复选框
  7. 选中并点击保存

答案 3 :(得分:0)

确保将createdOn字段类型设置为datetime,并检查传递给此字段的数据的格式。如果日期时间格式不正确,您可能会遇到此问题。