2012-07-11 61 views
0

我有這個代碼,我想要做的是獲得主鍵最後插入到用戶表,然後把它放到庫表的外鍵。我不知道如何處理$ request或在這裏做什麼?獲得主鍵作爲外鍵放在其他表

public function register($request = array()) { 
    $data = array(
     'user_name' => $request['username'], 
     'password' => $request['password'], 
     'email' => ($request['email']) 
    ); 
    $data1 = array(
     'user_id' => '5',// this is where I have to put the primary key from last table 
     'library_name' => $request['lib_name'] 
    ); 

    $this->model->insert('user', $data); 
    $this->model->insert('library', $data1); 
    $this->redirect('uploadSongs.php'); 
} 
+0

你有一個支持外鍵MySQL的存儲引擎? (InnoDB?) – Tobias 2012-07-11 12:02:54

回答

0

你可以這樣做

public function register($request = array()) { 
    $data = array(
     'user_name' => $request['username'], 
     'password' => $request['password'], 
     'email' => ($request['email']) 
    ); 

    $this->model->insert('user', $data); 
    $user_id = $this->model->select('user', $data); //select user_id from db 
    $data1 = array(
     'user_id' => $user_id , 
     'library_name' => $request['lib_name'] 
    ); 



    $this->model->insert('library', $data1); 
    $this->redirect('uploadSongs.php'); 
} 
+0

這不是這樣做的優化方式。有一個函數mysql_insert_id()爲什麼不使用這個 – 2012-07-11 12:13:09

+0

感謝poonam你的想法是有幫助的,只是一點改變我只需要從mysql_insert_id()獲取ID,就像Faizan所說的那樣,而不是使用select查詢......畢竟,謝謝大家它的工作:) – Saqib 2012-07-11 15:27:54

1

使用mysql_insert_id()

- 返回由以前的INSERT或UPDATE語句爲AUTO_INCREMENT列生成的值。

+0

它應該工作,如果我已經索引第二表的外鍵和應用級聯刪除和更新? – Saqib 2012-07-11 12:17:00

+0

我試過了,但它總是返回'0',爲什麼? – Saqib 2012-07-11 12:18:35

+0

閱讀它親愛的..看到這個鏈接例如.. http://www.w3schools.com/php/func_mysql_insert_id.asp – manurajhada 2012-07-11 12:23:05

0

你可以如果你使用任何框架,這樣

public function register($request = array()) { 
$data = array(
    'user_name' => $request['username'], 
    'password' => $request['password'], 
    'email' => ($request['email']) 
); 
$data1 = array(
    'library_name' => $request['lib_name'] 
); 

$this->model->insert('user', $data); 
$user_id = mysql_insert_id(); 
$data1['userid'] = $user_id; 
$this->model->insert('library', $data1); 
$this->redirect('uploadSongs.php'); 

} 做到這一點。然後他們有輔助功能得到最後插入ID,你應該使用他們

+0

我要做什麼$ user_id = mysql_inser_id() ;這裏雖然我需要大約$ data1 = array('user_id'=> // here) – Saqib 2012-07-11 12:23:32

+1

那麼你需要在數組發送到insert之前構建數組。我動態地將元素添加到數組中,我得到userid – 2012-07-11 12:25:27

0

感謝球員,它的工作,我需要做的只是改變邏輯,我愚蠢地使用它,並沒有看到在哪裏放置插入查詢,以便它的工作現在我所要做的只是改變插入查詢的地方給出

public function register($request = array()) { 
$data = array(
    'user_name' => $request['username'], 
    'password' => $request['password'], 
    'email' => ($request['email']) 
); 

$this->model->insert('user', $data); 
$data1 = array(
    'user_id' => mysql_insert_id(),// now it works as insert has been done above .... 
    'library_name' => $request['lib_name'] 
); 
$this->model->insert('library', $data1); 
$this->redirect('uploadSongs.php');