2012-04-11 37 views
-1

我正在嘗試實現一個搜索活動,它從基於搜索的mysql表中獲取數據。PHP腳本獲取基於mysql表的第一列單元的單元格

我想寫一個PHP腳本來使用輸入到EditText中的字符串並獲取相鄰的單元格。

例如,想象一下mysql表有兩列:Firstname和surname;我希望能夠通過搜索Firstname(輸入名字進入EditText)來獲取姓氏,我知道這可能需要一個SELECT Surname FROM Names WHERE ...查詢,但是如何從我的Java類中指示變量?

PHP script遠:

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("androidapp"); 
$sql=mysql_query("SELECT surname WHERE $get'fname'"); 
while($row=mysql_fetch_assoc($sql)) $output[]=$row; 
print(json_encode($output)); 
mysql_close(); 
?> 

而且,是HTTPGET方法適當或HttPost的方法來做到這一點,結果應該在一個TextView

+2

我從你的問題中瞭解的東西的數量太低了!說真的,我什麼也沒有理解,請重新解釋你的問題,更好地解釋你有什麼,以及你想要達到什麼。 – 2012-04-11 12:16:49

+0

請勿使用mysql_ *函數!它們在所有名稱中都被棄用,但與MySQL不完全兼容5 – GordonM 2012-04-11 12:21:40

+0

我已更新它,希望它更有意義? – 2012-04-11 12:22:11

回答

0

我假設你想發送和從PHP接收數據到Java(顯示姓android)通過http post或http get。糾正我,如果我錯了。

基本上你想讓php返回的是匹配表中第一個名字的行。

mysql_connect("localhost","root",""); 

mysql_select_db("androidapp"); 

$fname = mysql_real_escape_string($_POST['fname']); 

$result = mysql_query("SELECT surname FROM names WHERE fname = '$fname'"); 

//if you want only one record then 
$row = mysql_fetch_array($result); 

echo json_encode($row); 

mysql_close(); 

永遠記得要用php的mysql_real_escape_string()函數逃避任何sql注入的數據。另外我更喜歡HTTP POST。

從您的android應用程序,你將不得不發送一個http請求到PHP腳本所在的服務器。

希望這可以幫助你

0

我不太清楚你與你的查詢做什麼,但我會用

$fname = addslashes($_GET['fname']); 
$sql = mysql_query("SELECT surname FROM Names WHERE fname='$fname'"); 
... 

顯然,在查詢通過fname=whatever

GET絕對沒問題。 HTTP將GET請求指定爲從服務器返回信息並且沒有其他副作用(如修改數據庫)的請求。

-2

我想你有一個Android應用程序(用Java編寫)與一種用PHP編碼的Web服務進行通信。

因此,您的PHP應用程序應該像任何Web服務一樣運行。

在PHP中,您可以使用$ _GET,$ _POST或$ _REQUEST全局變量檢索給定腳本的參數。

  • $ _GET只包含參數通過GET方法(即 直接在URL)發送。

  • $ _POST僅包含通過POST方法發送的參數(即嵌套在http查詢中的 )。

  • $ _REQUEST是$ _GET + $ _POST的彙編。

對於Web應用程序,$ _REQUEST通常是最好的解決方案,因此您允許調用方使用任何方法(POST/GET)。如果您只想修復一個,請選擇$ _POST或$ _GET。

因此,

$sql = mysql_query("SELECT surname WHERE firstname='".mysql_real_escape_string($_REQUEST['fname'])."'"); 

不要忘記爲了從SQL注入,以防止mysql_real_escape_string()逃跑的參數。

+1

$ _REQUEST是非常危險的,不要使用它!如果你不知道它來自哪裏,你不能相信輸入。 – GordonM 2012-04-11 13:32:14

+0

$ _REQUEST只包含$ _GET + $ _POST($ _COOKIES不在PHP 5.3中的默認配置中)。你說過:「如果你不知道輸入是從哪裏來的,你就不能相信輸入」,但實際上一個Web應用根本不能相信輸入,你不知道它來自哪裏,因爲基本的認知者可以改變輸入,因爲他祝願。因此,您的應用程序必須檢查服務器端的數據。所以你錯了,$ _REQUEST沒有比$ _GET,$ _POST更危險(只有在非常特殊的情況下以及包含cookie的時候)或者給我一個你斷言的例子。 – Skrol29 2012-04-11 19:37:21

+0

僅僅因爲它默認關閉並不意味着你可以依靠它關閉。事實上恰恰相反。當涉及到安全性時,你必須始終假設最差。舉個例子,http://www.suspekt.org/2008/10/01/php-53-and-delayed-cross-site-request-forgeriesh劫持/除此之外,依賴於$ _REQUEST的web應用程序可以不是RESTful。 – GordonM 2012-04-11 20:07:01

相關問題