mysqli insert_id()

时间:2011-04-30 19:35:43

标签: php mysql 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?

2 个答案:

答案 0 :(得分:12)

您应该按照以下方式使用它:

<?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;
}
?>

答案 1 :(得分:5)

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

您似乎没有具有AUTO_INCREMENT属性的字段,或者您在查询中没有使用该字段。