Java 如何在Android中使用PHP MYSQL更新数据

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18606478/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 09:27:36  来源:igfitidea点击:

How to Update Data using PHP MYSQL in Android

javaphpandroidmysql

提问by Sneha

I am writing an app in which I need to update data using PHP MySQL, and every time I am getting message "Update Data Successfully". But whenever I see into my database, I am not getting any changes in values.

我正在编写一个应用程序,我需要在其中使用PHP MySQL更新数据,并且每次收到消息“成功更新数据”。但是每当我查看我的数据库时,我的值都没有发生任何变化。

Logcat says:

Logcat 说:

  09-04 12:00:50.176: D/gralloc_goldfish(538): Emulator without GPU emulation detected.
09-04 12:08:38.646: D/InputEventConsistencyVerifier(538): KeyEvent: ACTION_UP but key was not down.
09-04 12:08:38.646: D/InputEventConsistencyVerifier(538):   in com.android.internal.view.menu.ExpandedMenuView@4136ec30
09-04 12:08:38.646: D/InputEventConsistencyVerifier(538):   0: sent at 552986000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MENU, scanCode=229, metaState=0, flags=0x8, repeatCount=0, eventTime=552986, downTime=552899, deviceId=0, source=0x101 }
09-04 12:08:39.885: D/(538): UserLoginAppointmentActivity txtPhone[before] :: android.widget.EditText@41389238
09-04 12:08:39.885: D/(538): UserLoginAppointmentActivity txtPass[before] :: android.widget.EditText@4138acb0
09-04 12:08:40.205: W/TextLayoutCache(538): computeValuesWithHarfbuzz -- need to force to single run
09-04 12:08:42.976: D/dalvikvm(538): GC_CONCURRENT freed 131K, 3% free 10157K/10375K, paused 6ms+4ms
09-04 12:08:46.357: D/InputEventConsistencyVerifier(538): KeyEvent: ACTION_UP but key was not down.
09-04 12:08:46.357: D/InputEventConsistencyVerifier(538):   in android.widget.EditText@4138acb0
09-04 12:08:46.357: D/InputEventConsistencyVerifier(538):   0: sent at 561313000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=561313, downTime=561190, deviceId=0, source=0x101 }
09-04 12:08:49.746: D/(538): UserLoginAppointmentActivity txtPhone :: android.widget.EditText@41389238
09-04 12:08:49.746: D/(538): UserLoginAppointmentActivity txtPass :: android.widget.EditText@4138acb0
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity resultServer :: {"StatusID":"1","UserID":"24","Error":"Login Ok"}
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strStatusID[before] :: 0
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strUserID[before] :: 0
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strError[before] :: Unknow Status!
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strStatusID[after] :: 1
09-04 12:08:50.076: D/(538): UserLoginAppointmentActivity strUserID[after] :: 24
09-04 12:08:50.076: D/(538): UserLoginAppointmentActivity strError[after] :: Login Ok
09-04 12:08:50.105: D/(538): UserLoginAppointmentActivity UserID Intent :: 24
09-04 12:08:51.496: D/dalvikvm(538): GC_CONCURRENT freed 204K, 4% free 10345K/10695K, paused 5ms+5ms
09-04 12:08:55.475: D/(538): sAppointmentID :: 24
09-04 12:08:55.475: D/(538): sAppointmentID :: 53
09-04 12:08:56.166: D/(538): resultServer - getByMemberIDR:: {"UserID":"24","AppointmentID":"53","Type":"Cardiology","Date":"12-09-2013","Time":"22:15","Status":"Pending"}
09-04 12:08:56.166: D/(538): strUserID :: 24
09-04 12:08:56.176: D/(538): strAppointmentID :: 53
09-04 12:08:56.176: D/(538): strType :: Cardiology
09-04 12:08:56.176: D/(538): strDate :: 12-09-2013
09-04 12:08:56.176: D/(538): strTime :: 22:15
09-04 12:11:06.866: D/dalvikvm(538): GC_CONCURRENT freed 278K, 4% free 10459K/10887K, paused 7ms+7ms
09-04 12:15:36.425: D/(538): resultServer - updateData:: {"StatusID":"1","Message":"updated"}
09-04 12:15:37.015: D/dalvikvm(538): GC_CONCURRENT freed 330K, 5% free 10572K/11015K, paused 7ms+9ms

PHP Script:

PHP脚本:

<?php
$objConnect = mysql_connect("localhost","root","");
$objDB = mysql_select_db("android");

$strUserID = $_POST["sUserID"];
$strAppointmentID = $_POST["sAppointmentID"];

$strType = $_POST["sType"];
$strDate = $_POST["sDate"];
$strTime = $_POST["sTime"];

/*** Update ***/
$strSQL = " UPDATE book_appointment SET 
Type = '".$strType."',
Date = '".$strDate."',
Time = '".$strTime."' 
WHERE AppointmentID = '".$strAppointmentID."' ";

$objQuery = mysql_query($strSQL);
if(!$objQuery)
{
     $arr['StatusID'] = "0";
     $arr['Message'] = "Cannot save data!";   
}
else
{
     $arr['StatusID'] = "1";
     $arr['Message'] = "updated";
}
mysql_close($objConnect);
echo json_encode($arr);
?>

UpdateActivity.java:-

UpdateActivity.java:-

public class UpdateActivity extends Activity {

    private static final String tag = null;

        @SuppressLint("NewApi")
        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_update);

        // Permission StrictMode
        if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        }

        showInfo();

        // btnSave
        Button btnSave = (Button) findViewById(R.id.btnSave);
        // Perform action on click
        btnSave.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
        if(SaveData())
        {
        // When Save Complete
        Intent newActivity = new Intent(UpdateActivity.this,RescheduleActivity.class);
        startActivity(newActivity);
        }
        }
        });


        // btnCancel
        final Button btnCancel = (Button) findViewById(R.id.btnCancel);
        // Perform action on click
        btnCancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
        Intent newActivity = new Intent(UpdateActivity.this,RescheduleActivity.class);
        startActivity(newActivity);
        }
        });

        }

        public void showInfo()
        {
        // txtMemberID,txtUsername,txtPassword,txtConPassword,txtName,txtEmail,txtTel
        final TextView tUserID = (TextView)findViewById(R.id.txtUserID);
        final TextView tAppointmentID = (TextView)findViewById(R.id.txtAppointmentID);
        final TextView tType = (TextView)findViewById(R.id.txtType);
        final TextView tDate = (TextView)findViewById(R.id.txtDate);
        final TextView tTime = (TextView)findViewById(R.id.txtTime);


        Button btnSave = (Button) findViewById(R.id.btnSave);
        Button btnCancel = (Button) findViewById(R.id.btnCancel);

        String url = "http://10.0.2.2/appointments/getByMemberIDR.php";

        Intent intent= getIntent();
        final String UserID = intent.getStringExtra("UserID");
        final String AppointmentID = intent.getStringExtra("AppointmentID");

        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("sUserID", UserID));
        params.add(new BasicNameValuePair("sAppointmentID", AppointmentID));

        String resultServer  = getHttpPost(url,params);
        Log.d(tag, "resultServer - getByMemberIDR:: " + resultServer);

        String strUserID = "";
        String strAppointmentID = "";
        String strType = "";
        String strDate = "";
        String strTime = "";

        JSONObject c;
        try {
        c = new JSONObject(resultServer);

        strUserID = c.getString("UserID");
        Log.d(tag, "strUserID :: " + strUserID);
        strAppointmentID = c.getString("AppointmentID");
        Log.d(tag, "strAppointmentID :: " + strAppointmentID);
        strType = c.getString("Type");
        Log.d(tag, "strType :: " + strType);
        strDate = c.getString("Date");
        Log.d(tag, "strDate :: " + strDate);
        strTime = c.getString("Time");
        Log.d(tag, "strTime :: " + strTime);

        if(!strUserID.equals(""))
        {
        tUserID.setText(strUserID);
        tAppointmentID.setText(strAppointmentID);
        tType.setText(strType);
        tDate.setText(strDate);
        tTime.setText(strTime);     
        }
        else
        {
        tUserID.setText("====");
        tAppointmentID.setText("====");
        tType.setText("====");
        tDate.setText("====");
        tTime.setText("====");
        btnSave.setEnabled(false);
        btnCancel.requestFocus();
        }

        } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }        
    }


        public boolean SaveData()
        {
        // txtMemberID,txtPassword,txtName,txtEmail,txtTel

        final EditText txtType = (EditText)findViewById(R.id.txtType);
        final EditText txtDate = (EditText)findViewById(R.id.txtDate);
        final EditText txtTime = (EditText)findViewById(R.id.txtTime);

        //Dialog
        final AlertDialog.Builder ad = new AlertDialog.Builder(this);

        ad.setTitle("Error! ");
        ad.setIcon(android.R.drawable.btn_star_big_on);
        ad.setPositiveButton("Close", null);

        String url = "http://10.0.2.2/appointments/updateData.php";

        List<NameValuePair> params = new ArrayList<NameValuePair>();

        params.add(new BasicNameValuePair("sType", txtType.getText().toString()));
        params.add(new BasicNameValuePair("sDate", txtDate.getText().toString()));
        params.add(new BasicNameValuePair("sTime", txtTime.getText().toString()));

        String resultServer  = getHttpPost(url,params);
        Log.d(tag, "resultServer - updateData:: " + resultServer);

        /*** Default Value ***/
        String strStatusID = "0";
        String strMessage = "Unknow Status!";

        JSONObject c;
        try {
        c = new JSONObject(resultServer);
        strStatusID = c.getString("StatusID");
        strMessage = c.getString("Message");
        } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }

        // Prepare Save Data
        if(strStatusID.equals("0"))
        {
        ad.setMessage(strMessage);
        ad.show();
        return false;
        }
        else
        {
        Toast.makeText(UpdateActivity.this, "Update Data Successfully", Toast.LENGTH_SHORT).show();
        }        

        return true;
        }

        public String getHttpPost(String url,List<NameValuePair> params) {
        StringBuilder str = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        try {
        httpPost.setEntity(new UrlEncodedFormEntity(params));
        HttpResponse response = client.execute(httpPost);
        StatusLine statusLine = response.getStatusLine();
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) { // Status OK
        HttpEntity entity = response.getEntity();
        InputStream content = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(content));
        String line;
        while ((line = reader.readLine()) != null) {
        str.append(line);
        }
        } else {
        Log.e("Log", "Failed to download result..");
        }
        } catch (ClientProtocolException e) {
        e.printStackTrace();
        } catch (IOException e) {
        e.printStackTrace();
        }
        return str.toString();
        }        
}

采纳答案by Android

i am not sure but i think you should need to use below lines in SaveData():

我不确定,但我认为您应该需要在SaveData() 中使用以下行:

    final TextView tUserID = (TextView)findViewById(R.id.txtUserID);
    final TextView tAppointmentID = (TextView)findViewById(R.id.txtAppointmentID);

so your SavaData()should look like this:

所以你的SavaData()应该是这样的:

public boolean SaveData()
        {
        final TextView txtUserID = (TextView)findViewById(R.id.txtUserID);
        final TextView txtAppointmentID = (TextView)findViewById(R.id.txtAppointmentID);
        final EditText txtType = (EditText)findViewById(R.id.txtType);
        final EditText txtDate = (EditText)findViewById(R.id.txtDate);
        final EditText txtTime = (EditText)findViewById(R.id.txtTime);

        //Dialog
        final AlertDialog.Builder ad = new AlertDialog.Builder(this);

        ad.setTitle("Error! ");
        ad.setIcon(android.R.drawable.btn_star_big_on);
        ad.setPositiveButton("Close", null);

        String url = "http://10.0.2.2/appointments/updateData.php";

        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("sUserID", txtUserID.getText().toString()));
        params.add(new BasicNameValuePair("sAppointmentID", txtAppointmentID.getText().toString()));
        params.add(new BasicNameValuePair("sType", txtType.getText().toString()));
        params.add(new BasicNameValuePair("sDate", txtDate.getText().toString()));
        params.add(new BasicNameValuePair("sTime", txtTime.getText().toString()));

        String resultServer  = getHttpPost(url,params);
        Log.d(tag, "resultServer - updateData:: " + resultServer);

        /*** Default Value ***/
        String strStatusID = "0";
        String strMessage = "Unknow Status!";

        JSONObject c;
        try {
        c = new JSONObject(resultServer);
        strStatusID = c.getString("StatusID");
        strMessage = c.getString("Message");
        } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }

        // Prepare Save Data
        if(strStatusID.equals("0"))
        {
        ad.setMessage(strMessage);
        ad.show();
        return false;
        }
        else
        {
        Toast.makeText(UpdateActivity.this, "Update Data Successfully", Toast.LENGTH_SHORT).show();
        }        

        return true;
        }

As we know you are using UserID and AppointmentID to fetch all appointments, so whenever you are doing changes it requires that particular UserID and AppointmentID to point that row, which you have clicked...may be the reason

我们知道您正在使用 UserID 和 AppointmentID 来获取所有约会,因此每当您进行更改时,它都需要特定的 UserID 和 AppointmentID 指向您单击的那一行……可能是原因

please let me know this :)

请让我知道这一点:)

回答by Elon Than

You missed $in WHEREstatement. Also don't use deprecated mysql_*functions and validate data you're receiving from user!

你错过$WHERE陈述。也不要使用不推荐使用的mysql_*函数并验证您从用户那里收到的数据!

回答by WensonSmith

/*** Update ***/
$strSQL = " UPDATE book_appointment SET 
Type = '".$strType."',
Date = '".$strDate."',
Time = '".$strTime."' 
WHERE AppointmentID = '".strAppointmentID."' ";

$strAppointmentID

回答by Vedang Jadhav

What is happening is "Error" is not there in PHP of yours, its "Message". So it is going to exception in the try catch module.

发生的事情是你的 PHP 中没有“错误”,它的“消息”。所以它会在 try catch 模块中发生异常。

Change strMessage = c.getString("Error");to strMessage = c.getString("Message");

更改strMessage = c.getString("Error");strMessage = c.getString("Message");

That's it..THen it will work..

就是这样..然后它会工作..

回答by Roy

For the PHP

对于 PHP

$strUserID = $_POST["sUserID"];
$strAppointmentID = $_POST["sAppointmentID"];

$strType = $_GET["sType"];
$strDate = $_GET["sDate"];
$strTime = $_GET["sTime"];

$strSQL = 'UPDATE book_appointment 
           SET 
              Type = "'.$strType.'",
              Date = "'.$strDate.'",
              Time = "'.$strTime.'" 
           WHERE AppointmentID = "'.$strAppointmentID.'"';