2

我想从表中获取最后一个插入 ID,我正在使用MAX(user_id),但它不起作用(列user_id是 auto_increment 字段)这是我的代码

class.php

<?php

class Chat extends Core 
{
   public function addUser($email) {
        $this->query("INSERT INTO `users`(`username`) VALUES ('" . $this->db->real_escape_string($email) . "') ");
        $q = "select MAX(user_id) from `users`";
        $result = mysql_query($q);
        $data = mysql_fetch_array($result);
    }
}

}

?>

当我运行此查询时,我收到这样的警告消息

警告:mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源

这是我的 core.php

<?php
class Core {
   protected $db,$result;
   private $rows;
   public function __construct() {
    $this->db=new mysqli('localhost','root','','site');
   }
   public function query($sql)
   {
    $this->result=  $this->db->query($sql);
}
public function rows(){
    for($x=1;$x<=$this->db->affected_rows;$x++)
    {
        $this->rows[]=  $this->result->fetch_assoc();
    }
    return $this->rows;
   }
}

?>

有谁能够帮助我。谢谢。

4

4 回答 4

2

您是否试图获取最后插入的 id

然后使用

$last_user_id = $this->db->insert_id();

建议

更好地使用 ci db 功能

  public function addUser($email) {
    $userData = NULL;
    $result = $this->db->insert('users', array('users' => $email));
    if ($result == TRUE) {
      $user_id = $this->db->insert_id();
      $query = $this->db->get_where('users', array('user_id' => $user_id));
      $userData = $query->row_array();
    }
    return $userData;
  }
于 2013-04-01T08:24:05.480 回答
2

看起来你在mysqli下面使用,所以这会做你想要的:

public function addUser($email) 
{
    $this->query("INSERT INTO `users`(`username`) ...");
    $userid = $this->db->insert_id;
    // ... etc ...
}

因为mysqli::$insert_id是基于会话的,所以您可以避免导致错误标识符被传递的竞争条件。

也可以看看:mysqli::$insert_id

于 2013-04-01T08:29:45.843 回答
0

请使用以下功能,它将满足您的要求。

 mysql_insert_id()
于 2013-04-01T08:23:13.077 回答
0

使用下面的一个来获取最后一个 id:

mysql_insert_id();

AS Mysql 函数已弃用,您可以使用

mysqli_insert_id()
PDO::lastInsertId()
于 2013-04-01T08:24:18.637 回答