2012-04-02 97 views
1

我有一個Android應用程序發送一個JSON字符串到我的服務器,它的格式如下:遇到問題解析JSON與PHP

{"drink_name":"testing","phone_number":"5555555555"} 

當我使用命令:SELECT * FROM訂單,這表明,空白條目被插入到表中。

我認爲我的問題是由我的PHP腳本引起的(主要是因爲我是PHP新手)。 我正確解析json嗎? 下面是我寫的腳本。編輯: 這是我的Android代碼,如果它有任何幫助。

protected void sendJson(final String phnNmbr, final String drink) { 
    Thread t = new Thread(){ 
     public void run() { 
      Looper.prepare(); //For Preparing Message Pool for the child Thread 
      HttpClient client = new DefaultHttpClient(); 
      HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit 
      HttpResponse response; 
      JSONObject json = new JSONObject(); 
      try{ 
       HttpPost post = new HttpPost("http://kubie.dyndns-home.com/R2Bar2/sendOrder.php"); 
       json.put("phone_number", phnNmbr); 
       json.put("drink_name", drink); 
       StringEntity se = new StringEntity("orders: " + json.toString()); 
       se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
       post.setEntity(se); 
       response = client.execute(post); 
       /*Checking response */ 
       Toast.makeText(getApplicationContext(), json.toString(), Toast.LENGTH_LONG).show(); 
       if(response!=null){ 
        InputStream in = response.getEntity().getContent(); //Get the data in the entity 
       } 
      } 
      catch(Exception e){ 
       e.printStackTrace(); 
       //createDialog("Error", "Cannot Estabilish Connection"); 
      } 
      Looper.loop(); //Loop in the message queue 
     } 
    }; 
    t.start();  
} 
+0

那麼,'var_dump($ obj)'給你什麼? – deceze 2012-04-02 06:45:27

+0

另外,Android應用程序如何發送數據?請求是POST還是GET? – 2012-04-02 06:48:01

+0

嘗試開啓錯誤報告/錯誤記錄並再次檢查輸出。 – 2012-04-02 06:53:22

回答

1

我想通了我做錯了什麼。看起來好像我正在傳入一種原始數據類型。爲了解析字符串,我使用了以下內容:

$obj = json_decode(file_get_contents("php://input")); 

mysql_query("INSERT INTO orders (phone_number, drink_name) 
VALUES ('".$obj->{'phone_number'}."', '".$obj->{'drink_name'}."')"); 

感謝大家的建議。

0

你必須做出一個數據庫中的連接,follws,你已經錯過了$處理,使連接

$handle = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$handle) { 
    die('Not connected : ' . mysql_error()); 
} 

// make r2bar2 the current db 
$db=mysql_select_db('r2bar2',$handle); 
if (!$db) { 
    die ('Can\'t use r2bar2 : ' . mysql_error()); 
} 
+0

好吧,我試過了,但var_export仍然顯示我將NULL傳遞給數據庫。 – kubiej21 2012-04-02 07:21:13

+0

檢查以上代碼是否爲您的數據庫連接.......如果成功,您將得到預期的輸出。 – 2012-04-02 08:10:18

1

我曾用同樣的方法,除了你如何試圖訪問json數據在服務器上。

我已經使用$ _POST數組來訪問它,它對我很好。嘗試使用,

$json = $_POST['orders']; 
$obj = json_decode($json); 

這對我來說工作得非常好。所有最好:) (我不認爲有一個問題與$處理,因爲東西被插入到表中)

+0

感謝您的建議。我同意你的看法,$ handle不是問題,因爲在我的另一個腳本中,我能夠使用$ _POST將json數組解析爲表。我不知道爲什麼現在它不適合我...:/ – kubiej21 2012-04-02 15:22:18

+0

你的意思是即使POST數組現在不工作...? – Kishan 2012-04-02 20:06:19