2011-04-30 79 views
6

我不知道,我的代碼有什麼問題。我嘗試獲取最新的插入ID,其回顯0?任何想法?mysqli insert_id()

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? 
+1

你有一個獨特的自動遞增ID字段? – 2011-04-30 19:44:18

+2

PHP手冊:上一個查詢成功時爲AUTO_INCREMENT列生成的ID,如果上一個查詢未生成AUTO_INCREMENT值,則爲0,如果未建立任何MySQL連接,則爲FALSE。 – 2011-04-30 19:46:33

+0

@Pekka:是的,id_user是主鍵。 – tonoslfx 2011-04-30 19:46:40

回答

11

你應該使用它如下:

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

的mysqli_insert_id()函數返回由查詢與具有AUTO_INCREMENT屬性的列生成上的表中的ID。如果最後一個查詢不是INSERT或UPDATE語句,或者如果修改後的表沒有包含AUTO_INCREMENT屬性的列,則此函數將返回零。

看起來你沒有AUTO_INCREMENT屬性的字段,或者如果你有一個字段沒有在查詢中使用它。

相關問題