2017-04-09 50 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为关闭。

希望这对你有帮助。

相关问题