2011-07-19 11 views
0

をSQLするには、AndroidからのPOSTを使用してデータを送信しようと私のSQL Serverに私は私のアンドロイドからのデータをPOSTしようとしています

これは私のアンドロイドアプリケーションに

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("firstName",value)); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
HttpResponse response = httpclient.execute(httppost); 

これは私のPHP

です
$firstName = $_POST["firstName"]; 

$sql = "SELECT firstName FROM `colleague` WHERE `lastName` 
    LIKE '%$firstName%' LIMIT 0, 5 "; 
$result = mysql_query($sql); 

while($row = mysql_fetch_array($result)) $output[] = $row['firstName']; 

echo implode("<br/>",$output); 
print(json_encode($output)); 

これで、最初の5行が選択されます。$ firstName = $ _POST ["firstName"]には何も入力されません。 ??

phpのお知らせ

Undefined index: firstName in C:\xampp\htdocs\ 

のhttp宣言

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://192.168.1.1/Search.php"); 
+1

私は生のSQLを生成していて、(ユーザ提供の)firstName入力をエスケープしていないことを指摘する必要があります。これはSQLインジェクションのためのベクトルです。 – RHSeeger

+0

'httppost'を定義するために使用するコードを与えることができますか? – Jess

+0

サーバーコードの周りに簡単なRESTラッパーを使用することをお勧めします。そのはるかにエレガントで安全です。 – Sukumar

答えて

0

$firstName = $_POST['firstName'];は、単一引用符を試してみてください。 $ firstNameの値にスペースがありますか?エンコードされている場合は、phpでデコードします。例Your(space)Nameがある場合、エンコードされたフォームはYour+Nameになります。デコードしないと、クエリのエンコード値は$firstNameになります。 urldecode($_POST['firstName'])を使用して、エンコードされたURLのコンテンツをデコードしてください。

+0

これは問題の答えではありません。彼はすでにPOST辞書にはfirstNameのインデックスがないと言っているので、デコードするものは何もありません。見積もりタイプは関係ありません。 – Jess

+0

もし彼がBasicNameValuePair( "firstName"、value)を使用しているなら、彼は$ _REQUEST ['firstName']を試しなければならないかもしれません。あなたは同じと思いませんか? –

関連する問題