2012-11-01 40 views
0

這裏有一些小問題。如果我在我的「會話」表的數據庫,如果我有以下數據:如果字符串在數據庫中並且在末尾包含數字,則不希望字符串生成

SessionId 

C 

那麼什麼我的代碼的情況是,因爲它已經是它不會顯示在用戶生成一個新的字符串以上的字符串在數據庫中。例如,這工作得很好以上

我雖然問題是,如果我有多個會話(考試),然後在數據庫中它下面會顯示數據庫中的字符串如下:

SessionId 

C1 
C2 
C3 

的以上是3次考試。但問題是字符串「ADERF」仍然可以在下面的代碼中生成。我的問題是,如果在字符串的末尾有一個數字,就像上面的表一樣,那麼我怎麼能不生成字符串,因爲它仍然在數據庫中?字符串將始終爲5個字符長:

+0

去掉所有結尾數字並檢查所生成的字符串是否在數據庫? – Wyzard

+0

會話需要五個字符有什麼特別的原因嗎? – SomeKittens

+0

@Wyzard如果在字符串末尾沒有數字,那麼它將不會生成字符串,因爲它已經在db中,那很好,當數字位於數據庫的最後時,它仍然會生成字符串。我是否需要更改查詢以包含LIKE?那可以工作嗎? – user1723760

回答

0

查詢更改爲:

$result = "SELECT SessionId FROM Session WHERE SessionId LIKE CONCAT(?, '%')"; 
+0

嗨,我試過這個,並用較小的字符串測試它,但它仍然會生成一個已經在db中的字符串。如果在數據庫中我的SessionId是'C','C1','C2'和'C3',它不應該生成字符串'C',但它仍然會生成字符串。所以我猜這樣的聲明是行不通的 – user1723760

1

如果您希望爲每個會話/考試分配自己的ID(而不必擔心在碰撞時發生頭痛),請嘗試使用GUID s。有virtually no chance of collision

+0

閱讀你給我的鏈接,從來沒有使用GUID,並害怕使用它,因爲哇,這是混亂。這怎麼可以在我的代碼中被操縱? – user1723760

+0

http://php.net/manual/en/function.com-create-guid.php。像大多數事情一樣,PHP爲它提供了一個函數。 – SomeKittens

相關問題