php - 没有数据从 Android 插入到 MySQL

标签 php android mysql sqlite

在我的应用程序中,单击注册按钮时我需要将数据插入到两个地方,一个是SQLite,另一个是MySQL(Xampp 服务器)。数据已成功添加到 SQLite,但 MySQL 没有成功。

注册

 private static final String REGISTER_URL = "http://192.168.107.115/Android/CRUD/register.php";

     register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                   Password=password.getText().toString();
                   ConfirmPassword=confirmPassword.getText().toString();
                        sqlcon.open();
                        sqlcon.insertEntry(deviceName, Password); // insert to SQLite, no problem
                        register(deviceName, Password); // insert to MySQL

                    }

                }
            });    
        }

        private void register(String name,String password) {
            class RegisterUser extends AsyncTask<String, Void, String> {
                ProgressDialog loading;
                RequestHandler ruc = new RequestHandler();


                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                    loading = ProgressDialog.show(Register.this, "Please Wait",null, true, true);
                }

                @Override
                protected void onPostExecute(String s) {
                    super.onPostExecute(s);
                    loading.dismiss();
                    Toast.makeText(getApplicationContext(),"AA"+s,Toast.LENGTH_LONG).show();
                }

                @Override
                protected String doInBackground(String... params) {

                    HashMap<String, String> data = new HashMap<String,String>();
                    data.put("name",params[0]);
                    data.put("password",params[1]);
                    String result = ruc.sendPostRequest(REGISTER_URL,data);
                    return  result;
                }
            }

            RegisterUser ru = new RegisterUser();
            ru.execute(name,password);
        }

请求处理程序

public class RequestHandler {

        public String sendPostRequest(String requestURL,
                                      HashMap<String, String> postDataParams) {

            URL url;
            StringBuilder sb = new StringBuilder();
            try {
                //Initializing Url
                url = new URL(requestURL);

                //Creating an httmlurl connection
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();

                //Configuring connection properties
                conn.setReadTimeout(15000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);

                //Creating an output stream
                OutputStream os = conn.getOutputStream();

                //Writing parameters to the request
                //We are using a method getPostDataString which is defined below
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
                writer.write(getPostDataString(postDataParams));

                writer.flush();
                writer.close();
                os.close();
                int responseCode = conn.getResponseCode();

                if (responseCode == HttpsURLConnection.HTTP_OK) {

                    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    sb = new StringBuilder();
                    String response;
                    //Reading server response
                    while ((response = br.readLine()) != null){
                        sb.append(response);
                    }
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
            return sb.toString();
        }

        public String sendGetRequest(String requestURL){
            StringBuilder sb =new StringBuilder();
            try {
                URL url = new URL(requestURL);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

                String s;
                while((s=bufferedReader.readLine())!=null){
                    sb.append(s+"\n");
                }
            }catch(Exception e){
            }
            return sb.toString();
        }

        public String sendGetRequestParam(String requestURL, String id){
            StringBuilder sb =new StringBuilder();
            try {
                URL url = new URL(requestURL+id);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

                String s;
                while((s=bufferedReader.readLine())!=null){
                    sb.append(s+"\n");
                }
            }catch(Exception e){
            }
            return sb.toString();
        }

        private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
            StringBuilder result = new StringBuilder();
            boolean first = true;
            for (Map.Entry<String, String> entry : params.entrySet()) {
                if (first)
                    first = false;
                else
                    result.append("&");

                result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
                result.append("=");
                result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
            }

            return result.toString();
        }
    }

当点击注册按钮时,我看到 Toast 消息显示在 Register onPostExecute 中。

RequestHandler中,sendGetRequest,sendGetRequestParam从未使用过! mysql check时,没有插入数据。

最佳答案

我不确定您为什么选择这种架构师。这是非常不安全的,因为如果有人反编译您的代码,他们可以找到您的在线数据库密码并轻松访问您的所有数据,甚至更糟的是删除所有内容。这就是为什么像 API 这样的词诞生的原因。您应该在服务器端创建一个页面,该页面接受 POST 请求并验证变量。然后将其添加到在线数据库并返回例如确认插入的 Json 字符串。

关于php - 没有数据从 Android 插入到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488204/

相关文章:

php - 用于在 php 中注释/取消注释代码的 aptana 快捷方式

php - 没有定期刷新的 AJAX 聊天?

mysql - 如何给出多于一个的having子句

php - 如何使用 Laravel 显示基于 hasmany 关系的记录

php - 如何在php中读取以下kml文件?

php - PHP解析/语法错误;以及如何解决它们

java - Android 模拟器无法启动应用程序

android - 使用 mGLSurfaceView 处理 UI 事件

java - Android 内存不足错误,HashMap 中出现 20MB 文本文件

用于存储小数的 MySQL 字段类型