2016-02-04 151 views
-1

我最近下載後的安裝說明後與笨框架做了一些軟件,我跑在本地主機上的網站,它加載了,但只要我轉到註冊一個新成員它給了我跟隨錯誤。我對所有這些都是全新的,所以對你來說可能看起來微不足道的事情可能不會只是一個小小的頭腦。數據庫幫助需要我難倒

錯誤編號:1054未知列在 '字段列表' INSERT INTO`bw_users`(`password`,`location`,`register_time`, `salt`,`activation_hash`, 'activation_hash'`activation_id `,`email_address`, `email_activated`,`user_hash`,`user_name`,`user_role`, `public_key`,`private_key`,`private_key_salt`,`wallet_salt`, `local_currency`)VALUES $ 2a $ 10 $ 51GaLf4o644Rb/FxR8Os9enxWuop1V.haISOHzinT1Tq674.5SaXm ' '224', 1454533259, '$ 2A $ 10 $ 51GaLf4o644Rb/FxR8Os9hA2gGDxVQ ==', 'f0a57fb24bcda7bd87e26bc9bafb71ee', 'ae7522de65812b', '', '1', ' 2EB 1a2c0b086bf044a80' ,

文件名:型號/ Users_model.php

行號:37

我拉起Users_model線37和圍繞它的代碼

public function add($data, $token_info = NULL) 
{ 
    $ret = $this->db->insert('users', $data) == TRUE; <<<<<<<< This is line 37 
    if ($token_info !== null) 
     $this->delete_registration_token($token_info['id']); 

    return $ret; 
} 

我再檢查對於activation_hash的代碼,我可以看到它是朝着users_model.php底部的唯一的地方的其餘部分,其計算方法如下。

public function attempt_email_activation($identifier, $subject, $activation_hash) 
{ 
    $q = $this->db->select('id, email_activated')->get_where('users', array($identifier => $subject, 'activation_hash' => $activation_hash)); 
    if ($q->num_rows() > 0) { 
     $row = $q->row_array(); 
     if ($row['email_activated'] == '1') { 
      return 'activated'; 
     } else { 
      $this->_set_activated_email($row['id']); 
      return TRUE; 
     } 
    } 
    return FALSE; 
} 

這是我的sql數據庫的bw_users部分,如果需要,我可以發佈整個數據庫轉儲。

CREATE TABLE IF NOT EXISTS `bw_users` (
    `id` int(9) NOT NULL AUTO_INCREMENT, 
    `banned` enum('0','1') DEFAULT '0', 
    `block_non_pgp` enum('0','1') DEFAULT '0', 
    `entry_paid` enum('0','1') DEFAULT '0', 
    `force_pgp_messages` enum('0','1') DEFAULT '0', 
    `location` int(3) NOT NULL, 
    `login_time` int(20) NOT NULL, 
    `display_login_time` enum('0','1') DEFAULT '0', 
    `password` varchar(128) NOT NULL, 
    `public_key` blob NOT NULL, 
    `private_key` blob NOT NULL, 
    `private_key_salt` varchar(64) NOT NULL, 
    `register_time` int(20) NOT NULL, 
    `salt` varchar(128) NOT NULL, 
    `wallet_salt` varchar(128) NOT NULL, 
    `user_hash` varchar(25) NOT NULL, 
    `user_name` varchar(40) NOT NULL, 
    `user_role` enum('Buyer','Vendor','Admin') NOT NULL, 
    `local_currency` int(11) NOT NULL, 
    `completed_order_count` int(9) DEFAULT '0', 
    `totp_secret` varchar(25), 
    `totp_two_factor` enum('0','1') DEFAULT '0', 
    `pgp_two_factor` enum('0','1') DEFAULT '0', 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `user_hash` (`user_hash`,`user_name`), 
    KEY `user_name` (`user_name`,`user_hash`,`banned`,`entry_paid`,`register_time`,`user_role`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

INSERT INTO `bw_users` (`banned`, `block_non_pgp`, `entry_paid`,  `force_pgp_messages`, `location`, `login_time`, `display_login_time`, `password`, `public_key`, `private_key`, `private_key_salt`, `register_time`, `salt`, `pgp_two_factor`, `user_hash`, `user_name`, `user_role`, `local_currency`, `completed_order_count`, `totp_two_factor`, `totp_secret`) VALUES 
('0', '0', '1', '0', 1, 0, '0', '%PASSWORD%', '%PUBLIC_KEY%', '%PRIVATE_KEY%', '%PRIVATE_KEY_SALT%', '%REGISTER_TIME%', '%SALT%', '0', '%USER_HASH%', 'admin', 'Admin', 0, 0, '0', ''); 

是否有人可以告訴我,我需要做的,消除這種誤差,並能夠註冊用戶,我一直在試圖整天算出這個和它的駕駛我瘋了。感謝您的任何幫助。

編輯----------------------------------------

謝謝迄今的回信,我已修改的表與由@ VU摶映

ALTER TABLE bw_users ADD COLUMN activation_hash VARCHAR(128), ADD COLUMN activation_id VARCHAR(128), ADD COLUMN提供的信息,如下所示email_address VARCHAR(64),
ADD COLUMN email_activated SMALLINT(4);現在

CREATE TABLE IF NOT EXISTS `bw_users` (
    `id` int(9) NOT NULL AUTO_INCREMENT, 
    `banned` enum('0','1') DEFAULT '0', 
    `block_non_pgp` enum('0','1') DEFAULT '0', 
    `entry_paid` enum('0','1') DEFAULT '0', 
    `force_pgp_messages` enum('0','1') DEFAULT '0', 
    `location` int(3) NOT NULL, 
    `login_time` int(20) NOT NULL, 
    `display_login_time` enum('0','1') DEFAULT '0', 
    `password` varchar(128) NOT NULL, 
    `public_key` blob NOT NULL, 
    `private_key` blob NOT NULL, 
    `private_key_salt` varchar(64) NOT NULL, 
    `register_time` int(20) NOT NULL, 
    `salt` varchar(128) NOT NULL, 
    `wallet_salt` varchar(128) NOT NULL, 
    `user_hash` varchar(25) NOT NULL, 
    `user_name` varchar(40) NOT NULL, 
    `user_role` enum('Buyer','Vendor','Admin') NOT NULL, 
    `local_currency` int(11) NOT NULL, 
    `completed_order_count` int(9) DEFAULT '0', 
    `totp_secret` varchar(25), 
    `totp_two_factor` enum('0','1') DEFAULT '0', 
    `pgp_two_factor` enum('0','1') DEFAULT '0', 
    'activation_hash' varchar(128), 
    'activation_id' varchar(128), 
    'email address' varchar(64), 
    'email_activated' smallint(4), 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `user_hash` (`user_hash`,`user_name`), 
    KEY `user_name` (`user_name`,`user_hash`,`banned`,`entry_paid`,`register_time`,`user_role`, 'activation_has', 'activation_id', 'email_address', 'email_activated') 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

INSERT INTO `bw_users` (`banned`, `block_non_pgp`, `entry_paid`, `force_pgp_messages`, `location`, `login_time`, `display_login_time`, `password`, `public_key`, `private_key`, `private_key_salt`, `register_time`, `salt`, `pgp_two_factor`, `user_hash`, `user_name`, `user_role`, `local_currency`, `completed_order_count`, `totp_two_factor`, `totp_secret`, 'activation_hash', 'activation_id', 'email_address', 'email_activated') VALUES 
('0', '0', '1', '0', 1, 0, '0', '%PASSWORD%', '%PUBLIC_KEY%', '%PRIVATE_KEY%', '%PRIVATE_KEY_SALT%', '%REGISTER_TIME%', '%SALT%', '0', '%USER_HASH%', 'admin', 'Admin', 0, 0, '0', ''); 

問題是,當我轉到再添加數據庫,它是說有一個語法錯誤,它會不會增加新的線路,你有什麼我錯在這裏做什麼?

在最底層的是我也把它們放進插入到代碼中,我需要他們或他們的移動到主鍵,唯一鍵或組合鍵行呢?

+1

您需要將表'activation_hash'添加到表中。 –

+0

你可以登錄到DB併發布'desc users'的輸出嗎? –

+0

在第37行之前發佈var_dump($ data)。您的表缺少'activation_hash'列 –

回答

2

與修改您的表格:

ALTER TABLE bw_users 
ADD COLUMN `activation_hash` VARCHAR(128), 
ADD COLUMN `activation_id` VARCHAR(128), 
ADD COLUMN `email_address` VARCHAR(64), 
ADD COLUMN `email_activated` SMALLINT(4); 

EDITED後回答問題更新:使用'字符時

你的SQL INSERT語句有基本的錯誤。請使用`波紋管:

INSERT INTO bw_usersbannedblock_non_pgpentry_paidforce_pgp_messageslocationlogin_timedisplay_login_timepasswordpublic_keyprivate_keyprivate_key_saltregister_timesaltpgp_two_factoruser_hashuser_nameuser_rolelocal_currencycompleted_order_count,totp_two_factor,totp_secret, activation_hash,activation_id, email_address,email_activated)VALUES ('0','0','1','0',1,0,'0','%PASSWORD%','%PUBLIC_KEY%','%PRIVATE_KEY%','%PRIVATE_KEY_SALT%', '%REGISTER_TIME%','%SALT%','0','%USER_HASH%','admin','Admin',0,0,'0','');

更多細節: 您老:

'activation_hash' => `activation_hash` 
'activation_id' => `activation_id` 
'email_address' => `email_address` 
'email_activated' => `email_activated` 

如果你得到語法錯誤,請仔細檢查語法。很簡單。

+0

我使用您提供的信息編輯了原始帖子,當我嘗試導入數據庫時​​,出現語法錯誤,您可以查看當你得到一個空閒時刻的編輯。謝謝 – waspbit

+0

我更新了我的答案! –