2012-02-07 80 views
1

的第一行我最近得到了一個PHP腳本,我已經寫入將數據返回給我的android java代碼,不幸的是腳本只會在我撥打電話時返回數據我的桌子的第一排。使用MySQL返回正確的結果僅適用於表

我的表被格式化爲例如:

1 Jared Jones 
2 Karla Cross 
3 Jasmine Smith 
4 Vince Stevens 

的數字對應於用戶ID和其他2個屬性是FName參數和LName的。

我的PHP腳本來執行MySQL的腳本如下:

<?php 
mysql_connect("my database credentials go here"); 
mysql_select_db("a2275354_gtchose"); 
$sql=mysql_query("select FName,LName from Test where UserId ='".$_REQUEST['userId']."' "); 
while($row=mysql_fetch_assoc($sql)) 
$output[]=$row; 
print(json_encode($output)); 
mysql_close(); 
?> 

我不確定爲什麼我收到一個結果的唯一時間是當我通過1作爲用戶id來查詢。有任何想法嗎?

謝謝

+0

什麼是用戶ID字段的類型?此外,如果字段類型是整數,請閱讀http://www.php.net/mysql_real_escape_string,使用'mysql_query(「select TestFName,LName from Test where UserId ='」。intval($ _ REQUEST ['userId'])。 「'」);' – Cheery 2012-02-07 02:45:30

+0

@Cheery它屬於VarChar類型,僅僅是因爲這個我現在正在處理的只是一個更大的應用程序的測試,其中userId將是字母和數字的混合 – moneyman232 2012-02-07 02:47:11

+0

echo $ sql語句並告訴我們的輸出 – 2012-02-07 02:49:20

回答

0

嘗試刪除userId周圍的引號。它的一個數字字段

$sql=mysql_query("select FName,LName from Test where UserId =".$_REQUEST['userId']); 
+0

抱歉讓我澄清,從我的它是作爲一個字符串傳遞的java文件,而不是一個int類型 – moneyman232 2012-02-07 02:43:06

+2

這沒關係。而且,你正在將他推向SQL注入。 – Cheery 2012-02-07 02:43:11

+0

使用zend框架往往會殺死您的安全問題,尤其是要處理所有事情。我的錯。 – 2012-02-07 02:48:18

0

我不確定這是否會工作,但您可以試試這個。括號內添加到您現場FNAME和LNAME

$sql=mysql_query("Select (Fname,LName) from Test where UserId='".$_REQUEST['userID']."' "); 
0

你沒有while循環之前聲明您的數組...所以就把:

$output = array(); 

之前while,所以它應該是:

$output = array(); 
$sql=mysql_query(...); 
while($row=mysql_fetch_assoc($sql)) 
    $output[]=$row; 

另外,正如其他人指出的,這是SQL注入的動態,所以使用mysql_real_escape_string

另外,如果你的ID是數字,你應該刪除單引號圍繞它...雖然它並不重要,應該反正返回結果...

+0

檢查我的輸出結果返回爲空數組「[]」 – moneyman232 2012-02-07 02:49:34

+0

然後你沒有任何結果。在您的查詢中嘗試沒有WHERE部分。 – 2012-02-07 02:52:51

+0

試過...相同的結果不幸的是,這絕對是腳本中的一個錯誤,我的測試從phpmyadmin中返回結果。但是,PHP中的某些內容無法返回正確的結果。 – moneyman232 2012-02-07 02:56:51