我使用凌空连接到亚马逊数据库并在表格中更改特定值" 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文件来处理从开启到关闭的转换。
答案 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。
希望这会对你有所帮助。