MAX(user_id)无效

时间:2013-04-01 08:20:14

标签: php mysql

我想从表中获取最后一个插入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 个答案:

答案 0 :(得分: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;
  }

答案 1 :(得分:2)

看起来你正在使用mysqli,所以这可以做你想要的:

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

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

另请参阅:mysqli::$insert_id

答案 2 :(得分:0)

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

 mysql_insert_id()

答案 3 :(得分:0)

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

mysql_insert_id();

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

mysqli_insert_id()
PDO::lastInsertId()