【问题标题】:get primary key to put as foreign key in other table获取主键作为外键放在其他表中
【发布时间】:2012-07-11 01:03:02
【问题描述】:

我有这段代码,我想做的是将主键最后插入用户表,然后将其放入库表的外键中。我不知道如何使用 $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');
}

【问题讨论】:

  • 你有支持外键的mysql存储引擎吗? (InnoDB?)

标签: php mysql


【解决方案1】:

使用mysql_insert_id()

-- 返回上一个 INSERT 或 UPDATE 语句为 AUTO_INCREMENT 列生成的值。

【讨论】:

【解决方案2】:

你可以这样做

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');
}

【讨论】:

  • 这不是优化的方式。 mysql_insert_id() 有一个函数为什么不使用它
  • 感谢 poonam 你的想法很有帮助,只是一点点改变,我只需要从 mysql_insert_id() 获取 ID,正如 Faizan 所说,而不是使用 select 查询......谢谢大家,毕竟它工作了 :)
【解决方案3】:

你可以这样做

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,你应该使用它们

【讨论】:

  • 我与 $user_id = mysql_inser_id() 有什么关系;在这里,而我需要在 $data1 = array('user_id' => //here)
  • 好吧,您需要在将数组发送到插入之前构建数组。我正在动态地将元素添加到您在获取用户 ID 后看到的数组中
【解决方案4】:

谢谢大家,我需要做的只是改变逻辑,我愚蠢地使用它,没有看到在哪里放置插入查询所以它现在工作我所要做的就是改变给定插入查询的位置

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');

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 2017-03-10
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多