2012-07-25 73 views
1

有無論如何獲取當前記錄的ID我是插入到數據庫表中使用php與Mysql,而不必做額外的選擇獲取最後的ID?獲取當前mysql插入的ID

例如,如果我的表中有這些列,ID,網址名稱 如果URL由域名和電流id作爲查詢變量恩: domainname.com/page.php?id=current_id

​​
+3

/功能,你使用什麼庫執行插入?答案取決於它... [它可能是重複的](http://stackoverflow.com/search?q=%5Bphp%5D+%5Bmysql%5D+last+insert+id)。 – 2012-07-25 20:29:36

+0

我假設你使用PDO:[LastInsertId](http://php.net/manual/en/pdo.lastinsertid.php) – Romain 2012-07-25 20:30:08

+2

mysql_insert_id? http://it2.php.net/manual/en/function.mysql-insert-id.php – 2012-07-25 20:30:59

回答

3

我爲此使用mysql_insert_id()。它工作正常。

// pseudo-ish code 
$query = "INSERT something .... " 
$updated = $db->run_query($query); 
$id = mysql_insert_id(); 
+0

哎呀。接得好。嘿嘿 – Kristian 2012-07-25 20:38:11

0

當前的ID在$_GET['id']。將其插入到你的查詢之前,您應該清理動作:

$id = intval($_GET['id']); 

然後,在查詢中使用$id

+0

也逃脫那個網址!大聲笑 – 2012-07-25 20:42:56

-2

如果圍繞第一次插入添加類,然後再添加第二次選擇。選擇將工作。

<?php 
class insert1{ 
    function inserthere(){ 
      ***insert*** 
    } 
} 
class select1{ 
    function selecthere(){ 
      ***select*** 
    } 
} 
$a = new insert1; 
$a->inserthere(); 
$b = new select1; 
$b->selecthere(); 
?> 
3

據我所知,沒有「乾淨」的方式找到您要插入ID(從我從你的問題明白了,這是你想知道是什麼)。

在我看來,從醜陋的一個開始的兩個選項:select max(id) from Persons,用一個增加它,並希望沒有插入將會搞砸你。就像我說的那樣,它醜陋而且不可靠。

更好的選擇是首先插入帶有虛擬值的記錄,然後使用mysql_insert_id()檢索剛纔插入的行的ID。然後用正確的url值更新該記錄。

你要求一種方法來檢索id沒有選擇查詢後插入查詢,但就像我說的,我不認爲這是可能的。

+3

我認爲這可能是'乾淨'的插入式觸發器,不知道。此外,+1是第一個真正理解問題的答案者。 – TaZ 2012-07-25 20:49:57

+1

好主意。我看了一下插入觸發器,但不幸的是對於問題提問者仍然存在一個問題,這在第一個答案[這裏]中解釋得很好(http://stackoverflow.com/questions/1211792/mysql-trigger-到更新一個場到的值 - 的-ID)。保存問題提問潛入觸發器的麻煩:) – Wouter 2012-07-25 20:56:39

1

你的表應該是這樣的

ID AUTO_INCREMENT 
person_id VARCHAR 
person_url ... 
person_name ... 

您的文章形式類似

<form method="post"> 
    <input type="hidden" name="id" value="<?php echo uniqid() ?>" /> 
    ... 
</form> 

查詢應該是這樣的:

$person_id = intval($_POST['id']); 
$person_url = mysql_real_escape_string($_POST['url']); 
$person_name = mysql_real_escape_string($_POST['name']); 

mysql_query("INSERT INTO Persons (person_id, persno_url, person_name) VALUES ({$person_id} , {$person_url}, {$person_name})"); 

$ID = mysql_insert_id();