我想从表中获取最后一个插入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;
}
}
?>
任何人都可以帮助我。 感谢。
答案 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()