一个用户拥有多张卡(php、mysql)

一个用户拥有多张卡(php、mysql),php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个问题,我正在尝试创建一种方式,让登录的用户可以用他的名字注册多张卡。我理解这个概念,但就是不能应用它。所以我需要帮助 所以基本上我有两个表,一个用于用户,另一个用于卡片,如图所示 新用户 用户用钱 所以基本上我创建了所有这个表,大部分信息都是由我直接插入的,例如orig_id 所以基本上我只想做的是,用户登录后可以创建多张卡。也许新用户id可以等于用户id,但我不确定如何使它们相等,当新用户注册并输入更多卡时,该用户id和原始id如何相等 这是我的登录控制器和用户添加卡时的控制器 p

我有一个问题,我正在尝试创建一种方式,让登录的用户可以用他的名字注册多张卡。我理解这个概念,但就是不能应用它。所以我需要帮助

所以基本上我有两个表,一个用于用户,另一个用于卡片,如图所示

新用户

用户用钱

所以基本上我创建了所有这个表,大部分信息都是由我直接插入的,例如orig_id

所以基本上我只想做的是,用户登录后可以创建多张卡。也许新用户id可以等于用户id,但我不确定如何使它们相等,当新用户注册并输入更多卡时,该用户id和原始id如何相等

这是我的登录控制器和用户添加卡时的控制器

public function login(){
            $this->load->helper('form');
                $this->load->library('form_validation');
                $this->form_validation->set_rules('email', 'Email', 'required');
                $this->form_validation->set_rules('password', 'Password', 'required|min_length[4]|max_length[32]');
                
                if ($this->form_validation->run() == FALSE){
                    $this->load->view('header_view');
                $this->load->view('body_view');
                $this->load->view('footer_view');
                }else{
                     
                    $email = $this->input->post('email');
                    $password = $this->input->post('password');
                    
                    $this->load->model('main_page');
                   $user_id =  $this->main_page->login_user($email, $password);
                    if($user_id){
                        $user_data = array(
                            'user_id' => $user_id,
                            'email' => $email,
                            'loggedin' => true
                        );
                        
                        $this->session->set_flashdata('loggedin_success','you are loggedin');
                    
                        redirect('main/Admin');
                        
                        
                    }else{
                        
                         redirect('main/login');
                    }
                    
                }
            
        }
这是新卡注册的功能

public function insertUserCard(){
            
             $this->load->helper('form');
                $this->load->library('form_validation');
                
                $this->form_validation->set_rules('cardname', 'CardName', 'required');
                $this->form_validation->set_rules('iban', 'IBAN', 'required');
                $this->form_validation->set_rules('cc', 'CC', 'required|max_length[4]');
                $this->form_validation->set_rules('amount', 'Amount', 'required');
                
                if ($this->form_validation->run() == FALSE){
                $this->load->view('header_view');
                $this->load->view('admin_view');
                $this->load->view('footer_view');
                }else{
                    
                   
                   
                    $data =  array(
                    'card_type' => $this->input->post('cardname'),
                    'iban' => $this->input->post('iban'),
                    'cc' => $this->input->post('cc'),
                    'amount' => $this->input->post('amount'),
                     'orig_id' => 52 
             /*so the orig id here is randomly added by me */
                );


                    $this->load->model('main_page');
                   $this->main_page->storeCardInfo($data);
                   
                   redirect('main/Admin');
                    
                }
                
            
        }
如果需要的话,为插入的两个表数据提供模型

public function login_user($email , $password){
            $this->db->where('email', $email);
            $this->db->where('password', $password);
            
            $result = $this->db->get('new_users');
            if($result ->num_rows() == 1){
                return $result->row(0)->id;
            }else{
                return false;
            }
                
        }
public function storeCardInfo($data){
$insert = $this->db->insert('user_money',$data);
          return $insert;
            
        }
        
因此,如果有人能帮助我如何让一个用户在user\u money表中有多行。
我正在使用codeigniter和mysql

只需使用
用户id
,该id存储在
$user\u data
中的
登录()

首先,要使
user\u data
成为会话变量,以便整个控制器都可以访问它,请更改
login()
中声明
$user\u data
为局部变量的行,将其分配给会话变量

更改:

致:

然后。。。您可以在
insertUserCard()
中更改行:

要仅使用会话,请执行以下操作:

                 'orig_id' => $this->session->userdata('user_id');


我认为,既然您“对所有这些都不熟悉”,那么您可能应该确保您的MySQL数据库是用一个新的工具正确设置的。(并且您了解这是如何工作的)

那么,您的问题是如何让控制器确保
原始id
新用户id
相同吗?或者关于如何确保在MySQL中遵循a?@Tersosauros是的,我猜基本上如果原始id等于new_useser.id,那么我猜每次我添加一张卡时,它都会是该用户的一部分,所以我猜它可能会起作用,这听起来像是很多猜测!
$user\u data
是全局变量吗?这就是获取用户id所需的全部信息?是的$user_数据是一个全局变量,是的,很抱歉我对所有这些都不熟悉,所以基本上我有很多guessing@Tersosauros我将$user\u数据放在codeigniter文件global$user\u data的application/config/constant.php中;不确定这是否正确。嘿,我认为将$user_数据放在常量文件中没有帮助,有没有办法使$user_数据成为控制器本身的全局变量?如果我想删除这个user_钱表并再次创建它,我应该这样做吗??索引par_ind(新用户id)、外键(新用户id)我们在对象中没有“全局”内容(我假设您的控制器继承自
CI\u controller
?)。但是你当然可以让
$user\u data
成为controller类的一个字段(或者其他成员,如果你愿意的话),是的。哈哈,问题太多了!我认为,如果您不确定自己的数据库结构或操作,您应该问一个不同的问题(甚至可以提交一份报告)。您也不需要删除和重新创建一个表来向它们添加索引或外键约束。对不起,我现在对此有点困惑,但是如果您可以帮助我将$user\u数据作为一个全局变量,那么它可能会解决所有问题,现在我收到以下错误消息:未定义变量:user\u数据
               $user_id =  $this->main_page->login_user($email, $password);
                if($user_id){
                    $this->session->set_userdata(array(
...
                'orig_id' => 52 
        /*so the orig id here is randomly added by me */
                 'orig_id' => $this->session->userdata('user_id');