2017-04-09 42 views
0

我正在使用volley連接到亞馬遜數據庫並在「ON」和「OFF」之間更改表中的特定值。我使用onCheckedChanged和StringRequest來做到這一點,如果它被手動設置爲「ON」,它會成功將值更改爲「OFF」。但是,當我嘗試從「OFF」更改爲「ON」時,從volley(「com.android.volley.ServerError」)中收到服務器錯誤,並且該值保持不變。我的PHP目前在本地託管,我的登錄和註冊方法也可以正常工作。Android Volley中的服務器錯誤onCheckedChanged中的'if(isChecked)'

的Java:

ToggleButton light = (ToggleButton) findViewById(R.id.lightSwitch); 
light.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) { 
      StringRequest stringRequest = new StringRequest(Request.Method.POST, LOG_URL, 
        new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          Toast.makeText(DiningRoom.this, response, Toast.LENGTH_LONG).show(); 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Toast.makeText(DiningRoom.this, error.toString(), Toast.LENGTH_LONG).show(); 
         } 
        }); 
      MySingleton.getInstance(DiningRoom.this).addToRequestqueue(stringRequest); 
     }else{ 
      StringRequest stringRequest2 = new StringRequest(Request.Method.POST, LOG_URL2, 
        new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          Toast.makeText(DiningRoom.this, response, Toast.LENGTH_LONG).show(); 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Toast.makeText(DiningRoom.this, error.toString(), Toast.LENGTH_LONG).show(); 
         } 
        }); 
      MySingleton.getInstance(DiningRoom.this).addToRequestqueue(stringRequest2); 
     } 
    } 
}); 

PHP: 當這個腳本是由瀏覽器加載,它成功地改變從關到開值。錯誤只發生在通過android volley運行時。

<?php 
include 'dbConnect.php'; 

mysqli_query($conn,"UPDATE Component SET component_status = 'ON' WHERE component_id = 10"); 

?> 

我有第二個php文件來處理從開關關閉。

回答

0

檢查您的component_status是boolean還是tinyint(1)。因爲我在創建表時將類型設置爲布爾值,因此我在描述表時將類型設置爲tinyint(1)。

用戶desc 'tableName'查看錶格說明。

如果類型是TINYINT查詢更改爲

"UPDATE Component SET component_status = 1 WHERE component_id = 10" 

參考1爲ON和0爲關閉。

希望這對你有幫助。

相關問題