2016-11-04 100 views
0

因此,我有一個數據庫列,它有過去的用戶名。PHP檢查mysql數據庫是否包含字符串字符串

這是行如果它有信息的樣子。

bill, joe, ryan 

我想要做的是檢查單個行,並檢查是否像他們中的任何一個都包含joe。我對如何做一個可能的理論,但我擔心的是說某人過去的用戶名是:

billjoe 

恐怕它會認爲它存在於數據庫中,因爲在它該法案我希望它忽略的如果它不完全是賬單。

有什麼令人困惑的是,它可能有例如3個名稱在1個字符串中用逗號分隔。

我如何做到這一點是這樣的理論:

$stmt = $db->prepare("SELECT * FROM users WHERE pastusernames LIKE :pastusernames"); 
$stmt->execute(array(':pastusernames' => "%bill%")); 

但是,這甚至可能是完全錯誤的。那麼無論如何要正確地做到這一點?

+5

如果規範化數據庫,這可能會更容易。使用'user_id'和'name'列創建一個表'past_usernames'。然後,您可以在該表中搜索確切的用戶名和user_id。 – aynber

回答

0

不知道如何在PHP中寫入。但是SQL應該是這樣的:

SELECT * 
FROM users 
WHERE ', ' + pastusernames + ',' LIKE '%, bill,%' 

添加,您確保匹配整個事情,而不僅僅是部分

+0

那些'+「不應該是點(連接)?我懷疑「數學」是在這裏完成的。或者,這是我不知道的大師SQL嗎? *大聲笑* –

+0

@ Fred-ii-我說的是寫入sql代碼。不知道如何轉換到PHP –

0

我不知道,但可能低於查詢可能是你

工作
$stmt = $db->prepare("SELECT * FROM users WHERE pastusernames LIKE :pastusernames"); 
$stmt->execute(array(':pastusernames' => "bill")); 
相關問題