【问题标题】:Codeigniter Database Error: Column doesnt existCodeigniter 数据库错误:列不存在
【发布时间】:2015-09-16 17:03:02
【问题描述】:

我在网上学习了一些关于学习 CodeIgniter 框架的教程。我尝试创建一个登录和注册功能,一切都应该正常工作,但是在我提交注册表单后,它却向我发送了这个错误。

发生数据库错误

错误号:1054

“字段列表”中的未知列“用户名”

INSERT INTO 'users'('user_name'、'user_password_hash'、'user_email')值('Test2'、'$2a$08$cAkWVsvkaXvaumfcxW0gAOx2mBZMhIXxDpTQpHkOVme8l.1r9mok2'、'1111')

/www/application/models/user_model.php

行号:41

User_model.php 的第 41 行是$this->db->insert('users');

public function add_user()
{
    $passunhash = $this->input->post('password');
    $passhash = $this->bcrypt->hash_password($passunhash);
    $uname = $this->input->post('user_name');
    $opin = $this->input->post('pin');

    $this->db->set('user_name', $uname);
    $this->db->set('user_password_hash', $passhash);
    $this->db->set('user_email', $opin);
    $this->db->insert('users');
}

database.php 配置文件已被编辑以包含正确的数据库名称。

我无法弄清楚为什么它会给我这个数据库错误。列确实存在。会不会是 CodeIgniter 的问题?

【问题讨论】:

  • 你的表结构如何?有这样的专栏吗?
  • 它向您显示它正在运行的确切 SQL。您只需打开 MySQL CLI 并运行 SHOW COLUMNS FROM yourDB.users; 即可确认该列是否存在
  • 你需要引用字符串,否则它认为你指的是列名。
  • @ZackTanner 谢谢!问题出在 PHPMYADMIN!

标签: php mysql codeigniter


【解决方案1】:

正如 zack tanner 在从 mysql 命令行运行 SHOW COLUMNS FROM yourDB.users; 的 cmets 中提到的那样,返回 mysql 客户端可以读取的所有列。

我的 PHPMYADMIN 正在获取旧数据,因此从命令行运行会显示实时信息。我能够通过命令行完成其余的命令以重构数据库

【讨论】:

    【解决方案2】:

    这可能无法解决您的问题,但在插入用户时您可以使用数据数组();并且没有多个 db->set()

    public function add_user() {
    
    $passunhash = $this->input->post('password');
    $passhash = $this->bcrypt->hash_password($passunhash);
    
    $data = array(
        'user_name' => $this->input->post('user_name'),
        'user_password_hash' => $passhash,
        'user_email' => $this->input->post('pin')
    );
    
    $this->db->set($data);
    $this->db->insert($this->db->dbprefix . 'users');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2012-09-17
      • 2014-03-25
      • 1970-01-01
      • 2017-02-17
      • 2016-07-12
      相关资源
      最近更新 更多