2011-11-19 141 views
0

我正在建立一個網站,候選人可以發佈他們的簡歷,僱主可以發佈他們的工作。Mysql查詢建議/需要幫助

僱主可以發佈具有多種資質的工作,並將其保存在數據庫中,如PHP,Javascript,ASP。現在我希望管理員能夠選擇符合資格的候選人。

我寫查詢:

$sql = " 
     SELECT 
      cand_f_name, 
      cand_l_name, 
      cand_qualification, 
      cand_phone, 
      cand_email, 
      cand_experience_yr, 
      cand_experience_mn, 
      cand_message, 
      cand_id 
     FROM 
      tbl_cand_data 
     WHERE 
      cand_qualification LIKE '%$emp_q%' 

但它沒有顯示預期的結果。我認爲我的病情cand_qualification LIKE '$emp_q'是錯誤的。

我tbl_cand_data:enter image description here

+2

'LIKE'%$ emp_q%''你試過這個嗎? –

+0

雅我試過... bt同樣的結果 –

回答

2

如果你正在做一個LIKE查詢應該包含通配符,因爲他們會匹配字符串,否則只是做一個精確匹配使用=:

// String match 
WHERE 
    cand_qualification LIKE '%emp_q%'; 

// Exact match 
WHERE 
    cand_qualification = '$emp_q'; 

// You could try a WHERE IN clause as well 
WHERE cand_qualification IN ('$emp_q'); 

// Values have to be quoted individually 
WHERE cand_qualification IN ('BA','BSc','BCom'); 

// If you have an array you can do this:  
$myArray = array('BA', 'BSc', 'BCom'); 
$emp_q = "'" . implode("','", $myArray) . "'"; //Output 'BA', 'BSc', 'BCom' 
+0

我已經改爲cand_qualification LIKE'%$ emp_q%'但var_dump仍然顯示空數組。 ,cand_experience_mn,cand_message,cand_id FROM tbl_cand_data WHERE cand_qualification LIKE'%BA,BSc,BCom%'' –

+0

老實說,除非我們看到模式和幾行,否則很難說出你的結果。它看起來像你在多個CSV(逗號分隔值)的cand_qualifiation行中存儲數據。您是否在尋找'BA,BSc,BCom'的完全匹配? –

+0

不可以。我想要獲得BA或BSc或BCom資格的候選人名單 –

-1

一樣需要百分之% 嘗試

2

我在數據庫中保存它像這樣PHP,JavaScript中,ASP

這就是你完全錯誤的。

你必須創建一個相關的表(這就是爲什麼我們的ratabase稱爲關係之一!)存儲資格和互連表,由與候選id鏈接的資格id組成。
並使用基本連接查詢它們。

請注意,儘管您目前的決定是即使您決定繼續使用您的蹩腳架構,您也必須遲早以適當的方式重新制作它(但更快會使您的工作量減少)。
這是數據庫架構的基礎知識,沒有人可以反對它。

SELECT fields FROM tbl_cand_data d, qualification q, qual_cand qc 
WHERE q.name = 'ASP' AND q.id=qc.qid AND d.id=qc.did 
+0

謝謝Col. Shrapnel ...我現在要修改 –

+1

對於新來的人來說,這是相當嚴厲的攻擊,我對其他人在代碼或設計方法中指出問題沒有任何問題,但是讓這個人有些鬆懈。他可能無法獲得值得該死的DBA。 –

+0

是的,但比所有其他傳播LIKE的答案都好,並且令人欣慰。 –