Php 为什么可以';我的Android应用程序不能更新数据库吗?(正在运行)

Php 为什么可以';我的Android应用程序不能更新数据库吗?(正在运行),php,android,database,Php,Android,Database,我正在创建一个活动,该活动将更新数据库中的表“patients” 当我尝试在php中使用$u POST方法删除条件并尝试在变量上添加临时内容时,结果是成功的。但是当我再次使用$u POST方法并运行我的android应用程序时,结果是失败的。请帮我弄清楚。多谢各位 这是代码,我正在创建一个安全问题活动: import android.os.AsyncTask; import android.support.v7.app.ActionBarActivity; import android.os.B

我正在创建一个活动,该活动将更新数据库中的表“patients”

当我尝试在php中使用$u POST方法删除条件并尝试在变量上添加临时内容时,结果是成功的。但是当我再次使用$u POST方法并运行我的android应用程序时,结果是失败的。请帮我弄清楚。多谢各位

这是代码,我正在创建一个安全问题活动:

import android.os.AsyncTask; import
android.support.v7.app.ActionBarActivity; import android.os.Bundle;
import android.util.Log; import android.view.Menu; import
android.view.MenuItem; import android.widget.ArrayAdapter; import
android.widget.Spinner; import android.widget.EditText; import
android.widget.Button; import android.view.View; import
android.content.Intent; import android.widget.Toast;

import org.json.JSONException; import org.json.JSONObject;

import java.util.HashMap;


public class Securityquestion_Activity extends ActionBarActivity {

    Spinner question;
    EditText answer;
    Button submit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_securityquestion_);

        question = (Spinner)findViewById(R.id.securityQuestion);
        answer = (EditText)findViewById(R.id.securityAnswer);
        submit = (Button)findViewById(R.id.submit);

        String[] questions = {
                "What's the name of your first pet?",
                "Where's your place of birth?",
                "What's the sum of your birth date and month?",
                "What's your father's middle name?",
                "What's the surname of your third grade teacher?",
                "Who's your first boyfriend/girlfriend?",
                "Who's your first kiss?",
        };
        ArrayAdapter<String> stringArrayAdapter=
                new ArrayAdapter<String>(this,
                        android.R.layout.simple_spinner_dropdown_item,
                        questions);
        question.setAdapter(stringArrayAdapter);
    }

    public void submit(View v){
        String secquestion = question.getSelectedItem().toString();
        String secanswer = answer.getText().toString();
        Bundle extras = getIntent().getExtras();
        String secID;
        if(extras!=null){
            secID = extras.getString("sec_id");
            String[] args = {secquestion, secanswer, secID};
            SaveSecurity saveSecurity = new SaveSecurity();
            saveSecurity.execute(args);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_securityquestion_, menu);
        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    class SaveSecurity extends AsyncTask<String, String, JSONObject>{

        JSONParser jsonParser = new JSONParser();
        private static final String LOGIN_URL = "http://192.168.56.1/dc/security.php";

        private static final String TAG_SUCCESS = "success";
        private static final String TAG_MESSAGE = "message";

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(String... args) {

            try {

                HashMap<String, String> params = new HashMap<>();
                params.put("secquestion", args[0]);
                params.put("secanswer", args[1]);
                params.put("secID", args[2]);

                Log.d("request", "starting");

                JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params);

                if (json != null) {
                    Log.d("JSON result", json.toString());

                    return json;
                }

            }catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(JSONObject json) {

            int success = 0;
            String message = "";

            if (json != null) {
                Toast.makeText(Securityquestion_Activity.this, json.toString(),
                        Toast.LENGTH_LONG).show();

                try {
                    success = json.getInt(TAG_SUCCESS);
                    message = json.getString(TAG_MESSAGE);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            if (success == 1) {
                Log.d("Success!", message);
                Intent go = new Intent(Securityquestion_Activity.this, Home_Activity.class);
                go.putExtra("all_ID","secID");
                finish();
                startActivity(go);

            }
            else if (success == 0) {
                Log.d("Failure", message);
            }
            else{
                Log.d("Failure", message);
            }



        }
    } 
}
导入android.os.AsyncTask;进口
android.support.v7.app.ActionBarActivity;导入android.os.Bundle;
导入android.util.Log;导入android.view.Menu;进口
android.view.MenuItem;导入android.widget.ArrayAdapter;进口
android.widget.Spinner;导入android.widget.EditText;进口
android.widget.Button;导入android.view.view;进口
android.content.Intent;导入android.widget.Toast;
导入org.json.JSONException;导入org.json.JSONObject;
导入java.util.HashMap;
公共类安全性问题\活动扩展了ActionBarActivity{
旋转问题;
编辑文本回答;
按钮提交;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u安全问题);
问题=(微调器)findViewById(R.id.securityQuestion);
答案=(EditText)findViewById(R.id.securityAnswer);
提交=(按钮)findViewById(R.id.submit);
字符串[]问题={
“你的第一只宠物叫什么名字?”,
“你的出生地在哪里?”,
“你的出生日期和月份之和是多少?”,
“你父亲的中间名是什么?”,
“你的三年级老师姓什么?”,
“你的第一个男朋友/女朋友是谁?”,
“你的初吻是谁?”,
};
ArrayAdapter stringArrayAdapter=
新阵列适配器(此,
android.R.layout.simple\u微调器\u下拉菜单\u项,
问题);
问题.setAdapter(stringArrayAdapter);
}
公开作废提交(视图五){
String secquestion=question.getSelectedItem().toString();
String secanswer=answer.getText().toString();
Bundle extras=getIntent().getExtras();
字符串secID;
如果(附加值!=null){
secID=extras.getString(“secu id”);
字符串[]args={secquestion,secanswer,secID};
SaveSecurity SaveSecurity=new SaveSecurity();
saveSecurity.execute(args);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.menu\u安全问题,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
类SaveSecurity扩展了异步任务{
JSONParser JSONParser=新的JSONParser();
私有静态最终字符串登录\u URL=”http://192.168.56.1/dc/security.php";
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记_MESSAGE=“MESSAGE”;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的JSONObject doInBackground(字符串…args){
试一试{
HashMap params=新的HashMap();
参数put(“secquestion”,args[0]);
参数put(“secanswer”,args[1]);
参数put(“secID”,参数[2]);
日志d(“请求”、“启动”);
JSONObject json=jsonParser.makeHttpRequest(登录URL,“POST”,参数);
if(json!=null){
Log.d(“JSON结果”,JSON.toString());
返回json;
}
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(JSONObject json){
int成功=0;
字符串消息=”;
if(json!=null){
Toast.makeText(Securityquestion_Activity.this,json.toString(),
Toast.LENGTH_LONG).show();
试一试{
success=json.getInt(TAG_success);
message=json.getString(TAG_message);
}捕获(JSONException e){
e、 printStackTrace();
}
}
如果(成功==1){
Log.d(“成功!”,消息);
意向go=新意向(安全问题活动.this,Home活动.class);
go.putExtra(“全部ID”、“secID”);
完成();
星触觉(go);
}
else if(成功==0){
Log.d(“故障”,消息);
}
否则{
Log.d(“故障”,消息);
}
}
} 
}
这是php代码:

        <?php

    require_once 'connection.php';
    header('Content-Type: application/json');

    //This method here was the one I mentioned above  
    if(isset($_POST["secquestion"])&& isset($_POST["secanswer"])&& isset($_POST["secID"])){
        //These are the variables I tried temporarily changing it's content when I tested the php
        $ptnt_d = $_POST["secID"];
        $scrty_qstn = $_POST["secquestion"];
        $scrty_nswr = $_POST["secanswer"];

        if(!empty($ptnt_d)&&!empty($scrty_qstn)&&!empty($scrty_nswr)){

            $query = "Update patients Set patientsecurity='$scrty_qstn' and patientanswer='$scrty_nswr' WHERE patientid='$ptnt_d'";
            $result = $db->query($query);

            if($result){
                $json['success']=1;
                $json['message']="Security question and answer successfully saved.";
                echo json_encode($json);
            }
            else{
                $json['success']=0;
                $json['message']="Oops! An error occurred.";
                echo json_encode($json);
            }
        }
        else{
            $json['message']="You must complete all required fields.";
            echo json_encode($json);
        }
    }
?>

您没有正确清理sql查询:

更新患者设置patientsecurity='您的第一只宠物叫什么?和patientanswer='Bachoy'WHERE patientid='007-7992''


试着做一些类似于
$field=mysql\u real\u scape($\u POST['field']);

var\u dump($\u POST)给你什么?嗨,当你从你的活动发送http请求时,$\u POST变量中的值是空的还是不空的