1

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

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 脚本:

<?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:-

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();
        }        
}
4

5 回答 5

3

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

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

所以你的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;
        }

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

请告诉我这个:)

于 2013-09-04T09:44:09.810 回答
0
/*** Update ***/
$strSQL = " UPDATE book_appointment SET 
Type = '".$strType."',
Date = '".$strDate."',
Time = '".$strTime."' 
WHERE AppointmentID = '".strAppointmentID."' ";

$strAppointmentID
于 2013-09-04T06:13:22.150 回答
0

你错过$WHERE声明。也不要使用已弃用mysql_*的函数并验证您从用户那里收到的数据!

于 2013-09-04T06:08:10.427 回答
0

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

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

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

于 2013-09-04T06:17:28.527 回答
0

对于 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.'"';
于 2016-05-12T16:13:27.217 回答