2014-02-06 75 views
0

我是新來的android編程,我遇到了疑問。我試圖尋找類似的問題,但我什麼也沒發現:)所以,在這裏..如何從條件表中選擇所有數據?

給這個patientinfo表

patient_id | name | gender | age 
     1 | jen | female | 20 
     2 | jay | male | 19 

和記錄表

patient_id | date | description 
     1 | 01-01-14 | healthy! 
     1 | 02-01-14 | healthy! 
     2 | 01-01-14 | needs medication. 

我想獲得的所有某個患者的記錄。 例如,如果我選擇patient1 ..將顯示patient1的所有記錄。

這是我的查詢..

$query = "SELECT * FROM records INNER JOIN patientinfo ON records.patient_id = patientinfo.patient_id WHERE records.patient_id = $patient_id"; 

try{ 
    $stmt = $dbname->prepare($query); 
    $result = $stmt->execute(); 

}catch(PDOException $ex){ 
     $response["success"] = 0; 
     $response["message"] = $ex; 

     die(json_encode($response)); 
    } 


但它給了我一個錯誤的SQL語法,我認爲這是在$patient_id

errorInfo中:你有一個錯誤你的SQL語法;請查閱 對應於您的MySQL服務器版本的手冊,以獲取使用的正確語法。

預先感謝您!希望得到答案!謝謝:)

+0

*「但它在SQL語法中吐出錯誤...」* - 是? –

+1

你在哪裏設置了你的patient_id變量? –

+2

與您的問題無關,但首先不要存儲某人的年齡。它改變。存儲他們的出生日期並計算年齡。其次,選擇您需要的字段而不是選擇*。第三,當你使用關鍵字作爲列名時,許多數據庫會變得非常流行。在這種情況下,該字段是日期。 –

回答

1

嘗試:

SELECT * 
FROM patientinfo, records 
WHERE (patientinfo.patient_id = $patient_id) AND (patientinfo.patient_id = records.patient_id); 

你也可以專門列出列顯示,併爲其指定一個別名,例如:

SELECT records.date AS the_date 

只要WHERE records.patient_id = $patient_id似乎確定$ patient_id不是空字符串。爲此,我會在執行查詢之前查詢echo並檢查它是否正常。

+0

非常感謝你,但它獲得了記錄表中的所有數據,即使是未包含在我單擊的患者中的數據。 :) – superJen

+1

我已經更新了我的答案,請現在檢查。正如我所說的,檢查$ patient_id是否爲空。如果不是,並且是一個數字,這應該工作得很好。 – nKn

相關問題