Android Volley中的服务器错误仅在' if(isChecked)'在onCheckedChanged

时间:2017-04-09 19:27:12

标签: php android mysqli

我使用凌空连接到亚马逊数据库并在表格中更改特定值" ON"和"关闭"。我使用onCheckedChanged和StringRequest执行此操作,并成功将值更改为" OFF"如果手动设置为" ON"。当我试图改变" OFF"到" ON"但是,我从排球中得到一个服务器错误(" com.android.volley.ServerError")并且值保持不变。我的php目前正在本地托管,我的登录和注册方法也可以正常工作。

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: 从浏览器加载此脚本时,它会成功将值从off更改为on。只有当它通过android volley运行时才会出现错误。

<?php
include 'dbConnect.php';

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

?>  

我有第二个php文件来处理从开启到关闭的转换。

1 个答案:

答案 0 :(得分:0)

检查你的component_status是boolean还是tinyint(1)。因为我在创建表时将类型设为boolean,当我描述表时,我将类型设为tinyint(1)。

用户desc 'tableName'查看表格说明。

如果类型为tinyint,请将查询更改为

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

将1指定为ON,将0指定为OFF。

希望这会对你有所帮助。