数据库结构可能性

时间:2015-06-04 08:18:04

标签: php sql-server database codeigniter odbc

我对数据库有疑问,而且我正在使用有效的记录编号。

逻辑是这样的:我有一个表,假设它的名字是A,表A有4个字段,例如:uniqueID,typeofID,date和userID。

第一步:我(用户)使用条件uniqueID和typeofID对表A进行验证。如果行为true或uniqueID可用,则返回成功。

第二步:如果验证成功,那么用户可以将数据插入到新表中,假设表是B.在表B中,带有额外A.I(自动增量)的id。在表B中有4个字段:id,username,question1,question2。

问题是:我可以将表B id插入到字段userID表A中吗? 这样,当有人访问表A时,他会通过知道userID知道表A中的用户名是什么。

=============================================== ==========================

来自成员的解决方案,已经成功。 首先,我使用表中的唯一ID将数据插入表B,并在插入数据之后获取最后一个ID。

这是我的解决方案

$this->db->insert('tableB', $data);
$result  = $this->db->insert_id();

$this->db->where('uniqueID', $data2['uniqueID']);
$result2 = $this->db->update('tableA', array('idfromtableB' => $result));

return $this->db->affected_rows();

但我在odbc中遇到了insert_id()错误。错误说:     遇到PHP错误     

严重性:注意

    

消息:未定义属性:CI_DB_odbc_driver :: $ db

    

文件名:odbc / odbc_driver.php

    

行号:239

    

回溯:

<p style="margin-left:10px">
        File: C:\xampp\htdocs\myproject\application\models\users_m.php
    <br />
        Line: 79
    <br />
        Function: insert_id         
</p>

=============================================== ==========================

在此处找到解决方案:SQL Server last insert id return array in CodeIgniter

2 个答案:

答案 0 :(得分:1)

插入表B后,使用$user_id = $this->db->insert_id()获取最后一个插入ID(表B的ID),然后更新表A.所以你的代码看起来像

...
$this->db->insert('tableA',$data);
$last_rowID = $this->db->insert_id();
$this->db->insert('tableB',$dataB);
$user_id = $this->db->insert_id();
$this->db->where('tableA_ID',$last_rowID )->update('tableA',array('userID' => $user_id));

答案 1 :(得分:0)

是的,你可以,你只需要加入你的桌子:

例如:

public function get_info($id){
  $this->db->select('*');
  $this->db->from('tableA');
  $this->db->join('tableB' ,tableA.id=tableB.id);
  $this->db->where('tableA.id' , $id);
  $query = $this->db->get();

  return $query->result_array(); 

}

请修改它,以便适合您的代码。