Android应用程序将列名而不是值插入mysql?

时间:2017-09-23 01:28:20

标签: php android mysql insert

我正在尝试构建一个应用程序,将我的书籍插入到Mysql数据库中。我可以从应用程序成功插入但在我的数据库中列名是插入而不是值。

Addinfo.java

import android.app.Activity;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class AddInfo extends Activity {
    EditText Name,Email,Mobile;
    String Bookname,Author,Status;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_info_layout);
        Name=(EditText)findViewById(R.id.et_name);
        Email=(EditText)findViewById(R.id.et_email);
        Mobile=(EditText)findViewById(R.id.et_Mobile);
    }
    public  void saveInfo (View view)
    {
        Bookname=Name.getText().toString();
        Author=Email.getText().toString();
        Status=Mobile.getText().toString();

        BackgroundTask backgroundTask = new BackgroundTask();
        backgroundTask.execute(Bookname,Author,Status);
         finish();

    }
    class BackgroundTask extends AsyncTask <String,Void,String>
    {
       String add_info_url;
        @Override
        protected void onPreExecute() {
            add_info_url="http://abc.ga/StudentRegister.php";
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... args) {
            String name,email,mobile;
            name=args[0];
            email=args[1];
            mobile=args[2];
            try {
                URL url=new URL(add_info_url);
                HttpURLConnection httpURLConnection =(HttpURLConnection) url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                OutputStream outputStream=httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter= new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8"));
                String data_string = URLEncoder.encode("Bookname","UTF-8")+"="+URLEncoder.encode("Bookname","UTF-8")+ "&"+
                        URLEncoder.encode("Author","UTF-8")+"="+URLEncoder.encode("Author","UTF-8")+ "&"+
                        URLEncoder.encode("Status","UTF-8")+"="+URLEncoder.encode("Status","UTF-8");

                   bufferedWriter.write(data_string);
                bufferedWriter.flush();
                bufferedWriter.close();
                InputStream inputStream =httpURLConnection.getInputStream();
                inputStream.close();
                httpURLConnection.disconnect();
                return "Book Added Successfully";

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }


            return null;
        }

        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onPostExecute(String result) {
            Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG).show();
      }
    }


}

StudentRegister.php

我创建了一个HTML文件来测试下面的PHP,它工作正常,但它永远不会从android插入。

 <?php
    //StudentRegister.php

if($_SERVER['REQUEST_METHOD']=='POST'){

include 'DatabaseConfig.php';

 $con = mysqli_connect($HostName,$HostUser,$HostPass,$DatabaseName);
$Bookname=$_POST["Bookname"];
$Author=$_POST["Author"];
$Status=$_POST["Status"];
//$Date=$_POST["Date"];

$Sql_Query = "INSERT INTO Books values 
(DEFAULT,'$Bookname','$Author','$Status');"; 

 if(mysqli_query($con,$Sql_Query))
{
 echo 'Done';
}
else
{
 echo 'Something went wrong';
 }
 }
 mysqli_close($con);
?>
  

错误:插入列名并且没有插入值。

1 个答案:

答案 0 :(得分:0)

上述问题已经解决。

它是由URLENCODER引起的,在进行了以下更改后效果很好。

data_string = URLEncoder.encode("Bookname","UTF-8")+"="+URLEncoder.encode(Bookname,"UTF-8")