[英]get last record of a table
我有一個表格,可以讓用戶創建新記錄,
在要自動增加的ID的字段中,我希望用戶通過某種方式在字段值中顯示此記錄的最新記錄號。
我在想類似的東西:
<input type="text" value="<?php echo $myQuery['recordId'].length+1"/>
但這是行不通的。
同樣,這只是為了獲取<input>
的默認值
無需查找最后一個ID,並且此表單僅由一個管理員使用。
您可以通過選擇找到一個加最高的ID:
SELECT MAX(id)+1 FROM table
但是就像David所說的那樣,您不能保證這將是所使用的ID,因為2個人可能會同時加載該頁面。
要獲取與該連接相關的最后一個ID,請使用mysql_insert_id
在您的情況下,您必須在db中插入一個空記錄,然后才能保證它會計數。 如果用戶不繼續操作,它將留下很多空的記錄,但是您可以在每次加載表單時進行清理,方法是刪除一個多小時前創建的沒有標題值或類似內容的記錄。
如果絕對需要將其作為整數,則始終可以創建僅具有一個auto_increment列的特殊表,將其插入其中,獲取last_insert_id()並使用它。 這有點像甲骨文中的序列。 不使用的ID將會浪費,但是不會發生與多用戶方案相關的其他問題。 以下代碼是從mysql文檔中復制的有關信息功能的代碼。 去那里閱讀此代碼的承諾。
CREATE TABLE sequence (id INT NOT NULL);
INSERT INTO sequence VALUES (0);
UPDATE sequence SET id=LAST_INSERT_ID(id+1);
SELECT LAST_INSERT_ID();
現在回到我自己的話。 如果不必一定是整數,則可以使用guid 。 在php中有一個uniqid函數,在mysql中有一個uuid函數。 該理論說,即使每個人都始終保持獨立地生成向導,每個向導也將是唯一的。
因此,這是一種實現方式:
<?php
$query = "select uuid()";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$uuid = $row[0];
?>
<input type="text" value="<?php echo $uuid; ?>"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.