2014-01-07 105 views
0

我使用下面的代碼從我的應用程序將數據發送到PHP腳本我的服務器上:從android發送數據到php和php存儲序列?在MySQL

postList.add(new BasicNameValuePair("PType", TxtWeight.getText().toString())); 

String StrURL="http://chacho.comuv.com/android/insert_pistachio_sell.php"; 
myJsonObject=JP.store_And_Feedback("PType",SpnPistachio.getSelectedItem().toString())); 
DefaultHttpClient DHC=new DefaultHttpClient(); 
HttpPost httpPost=new HttpPost("StrURL"); 
httpPost.setEntity(new UrlEncodedFormEntity(postList)); 

下面的PHP代碼將接收到的數據存儲在我的數據庫:

<?php 
    require_once "./includes/DB_Connect.php" 
    $PType=$_POST['PType']; 

    $SQL="INSERT INTO sell (ptype)VALUES ('".mysql_real_escape_string($PType)."')"; 
    $Result=mysql_query($SQL); 
?> 

但是數據像「??????????」那樣保存在數據庫中

我已經搜索了很多,但我還沒有找到一種方法來使其正常工作。

+0

我沒有在代碼中看到你將'Ptype'鍵值對添加到postList列表中。你是否將PWeight寫入數據庫?如果是這樣,通過POST請求正確發送? – elitechief21

+0

這只是一個打字問題,我糾正它 – HamidTB

+0

所有字符都轉換爲'?'還是僅轉換爲非ASCII?爲了一致的Unicode支持,你應該在兩邊使用UTF-8:在客戶端使用'new UrlEncodedFormEntity(postList,「UTF-8」)',在應用服務器使用'mysql_set_charset('utf-8')',使用UTF-8數據庫服務器上的相關表。 – bobince

回答

2

首先,我感謝你從@bobince求助

1在該領域工作的MySQL集集合「utf8_persian_ci」

在PHP代碼2 - 後連接到數據庫運行這段代碼

mysql_query("SET NAMES 'UTF8'"); 

在機器人代碼使用UTF-8編碼這樣的代碼

new UrlEncodedFormEntity(postList, "UTF-8") 

數據無線3-會在你的mysql數據庫上正確保存

+0

通過'SET NAMES'優先選擇'mysql_set_charset('utf-8')'。後者不能正確更新'mysql_real_escape_string'使用的編碼信息,使其與'mysql_escape_string'實際上相同。 – bobince

+0

@bobince再次感謝你;我只是使用mysql_query(「SET NAMES'UTF8'」);在php腳本中,並在android應用程序中使用新的UrlEncodedFormEntity(postList,「UTF-8」),並從php腳本中刪除mysql_real_escape_string;每件事情都很完美:) – HamidTB

+0

不要刪除'mysql_real_escape_string',你需要它來避免SQL注入漏洞! (通常,你最好使用'mysqli'或PDO和參數化查詢一起使用,這樣你就不必每次都明確地使用'mysql_real_escape_string',但是如果你堅持使用'mysql',那麼這個SQL轉義是必不可少的。) – bobince