2014-01-12 48 views
1

我正在使用apigee控制檯使用以下URI來測試我的Web服務。當我選擇所有用戶,該查詢返回的數據(http://creative.coventry.ac.uk/~4089797/Games/V1.0/index.php/users/all):mysql查詢未獲取用戶數據

[ 
{"id":"1","username":"fkhan","password":"XXXXXXXX","email":"[email protected]","Gender":null,"country":null,"activated":"0"}, 

{"id":"2","username":"bkhan","password":"XXXXXXXX","email":"[email protected]","Gender":null,"country":null,"activated":"0"}, 

{"id":"3","username":"ckhan","password":"XXXXXXXX","email":"[email protected]","Gender":null,"country":null,"activated":"0"} 
] 

但是,當我選擇一個特定的用戶,查詢不返回任何數據(creative.coventry.ac.uk/~4089797/Games/ V1.0/index.php文件/用戶/用戶名/ fkhan是):

{"status":false,"error":"Unknown method."} 

我有一個在MySQL數據庫中名爲user用戶,這是檢索名稱的PHP:

function users_get($users_username) { 
    $this->load->database(); 
    $sql = 'SELECT * FROM users WHERE username = "'.$username.'";'; 
    $query = $this->db->query($sql); 
    $data = $query->row(); 
    $this->response($data, 200); 
} 

這個我s的查詢功能:

function all_get() { 
    $this->load->database(); 
    $sql = 'SELECT * FROM users;'; 
    $query = $this->db->query($sql); 
    $data = $query->result(); 
    $this->response($data, 200); 
} 

爲什麼我會得到所有用戶的結果,但不是一個特定用戶?

+0

查找變量的作用域和函數參數 – asprin

回答

0

它看起來像你在你的SQL命令中使用了錯誤的變量。該函數被定義爲

功能users_get($ users_username){

,其中輸入變量爲$ users_username

但在SQL命令

$ SQL =' SELECT * FROM users where username =「'。$ username。' 「;';

您使用$ USERNAME

改變你的SQL命令如下,它應該是好的

$ SQL = 'SELECT * FROM用戶其中username =」'。 $ users_username「「;」;

+0

香港專業教育學院改變了它,但IM仍然得到同樣的問題的功能users_get($ users_username){$ 這 - >負載>數據庫(); $ sql ='SELECT * FROM users WHERE username =「'。$ users_username。'」;'; $ query = $ this-> db-> query($ sql); $ data = $ query-> row(); $ this-> response($ data,200); } – user3187726

+0

感謝您接受回覆。通過接受答案,我認爲你的問題現在已經解決了。你整理過了嗎?還是你有問題? – Espanta

+0

是的,我已經將這個問題現在排序到許多其他問題:D – user3187726

1

在你的參數$users_username但在您使用$username的方法實現的方法聲明,那是你的主要錯誤:變量$username不存在,所以它是null;替換

$sql = 'SELECT * FROM users WHERE username = "'.$username.'";'; 

$sql = 'SELECT * FROM users WHERE username = "'.$users_username.'";'; 

此外,考慮使用準備語句,而不是手動放置變量的查詢字符串中。

1

username變量未在函數中定義,因此它是空的。 我相信你已經混淆了它的名字,並打算使用$users_username

$sql = 'SELECT * FROM users WHERE username = "'.$username.'";'; 

將其替換爲:

$sql = 'SELECT * FROM users WHERE username = "'.$users_username.'";'; 
1

你的變量稱爲$users_username,但查詢是可變$username所以你的最終查詢是SELECT * FROM users WHERE username = "";,並沒有與空字符串的用戶。 :)