mysqli insert_id()

ton*_*lfx 7 php mysqli class

我不知道,我的代码中有什么不对.我尝试获取最新的插入ID,它回显0?任何的想法?

public function __construct() {
  $this->mysqli = new mysqli(MYSQLI_SERVER, MYSQLI_USER, MYSQLI_PWD, MYSQLI_DBNAME) or die ('Error with connecting to the database!');;
}
public function insert_id(){
   return $this->mysqli->insert_id;  
}

$db->query("INSERT INTO user(f_name, l_name) VALUES('$f_name', '$l_name')");
var_dump($db->insert_id()); // return 0?
Run Code Online (Sandbox Code Playgroud)

Adn*_*nan 13

您应该按如下方式使用它:

<?php
$mysqli = new mysqli(SQLI_SERVER, MYSQLI_USER, MYSQLI_PWD, MYSQLI_DBNAME);
if ($result = $mysqli->query("INSERT INTO user(f_name, l_name) VALUES('$f_name', '$l_name');")) {
   echo 'The ID is: '.$mysqli->insert_id;
}
?>
Run Code Online (Sandbox Code Playgroud)


小智 5

mysqli_insert_id()函数返回由具有AUTO_INCREMENT属性的列的表上的查询生成的ID.如果最后一个查询不是INSERT或UPDATE语句,或者如果修改后的表没有具有AUTO_INCREMENT属性的列,则此函数将返回零.

看起来您没有具有AUTO_INCREMENT属性的字段,或者您在查询中没有使用它.