2012-01-31 59 views
0

我需要從MYSQL中提取一個值,比改變值並插入到mysql中。PHP MYSQL:即時選擇+插入

例如:

$str = mysql_fetch_assoc(mysql_query('SELECT `str_id` FROM `ids` ORDER BY `num_id` DESC LIMIT 1 ')); // = aaa 
$str = $str++; // aaa -> aab 
// than check if "aab" key already exist 
// if not , insert as key as "aab" 

因爲這個算法有此腳本從地球的兩側,兩個獨特的鍵運行將是標誌爲「AAB」風險..

我怎樣才能做到這一點,而無需簽署這個獨特的鑰匙兩次的風險?

回答

0

當使用MySQL-InnoDB時,您應該使用事務(由MySQLi和PDO提供)用於該原因。 MyISAM不支持它。

以下是有關交易PDO手冊:http://php.net/manual/en/pdo.transactions.php

+0

交易沒有真正的幫助。你需要一個'UNIQUE'索引。 – tadman 2012-01-31 17:19:20

1

如果你設置你的數據庫中,以便該列是唯一的,MySQL表不會允許您添加相同值的兩倍。然後您可以檢查交易的結果以確保它成功。

從你的例子看來,你只是想要一個遞增的唯一鍵。您應該爲此使用整數,當您插入新行時,該整數可以自動遞增。如果你想讓它成爲字符串形式,只需對它進行一些基本的數學運算。即

1 = a 
2 = b 
... 
27 = aa 
28 = ab 

這是假設你不已經對你的表的主鍵,在這種情況下,我不明白爲什麼你需要這種形式的字符串。希望這會有所幫助,如果我誤解了這個問題,我很抱歉。