2016-04-04 26 views
1

Android Studio ile yeni başlayan biriyim. Kullanıcının kayıt yaptırabileceği ve kendi hesaplarını kullanarak giriş yapabileceği bir proje oluşturmak istiyorum. Ben Prabeesh öğretici Android - MySQL - 02 - MySQL Veritabanı, https://www.youtube.com/watch?v=cOsZHuu8Qog içine veri ekle. MySQL verisine veri girmesi gereken her zaman tıklama kaydı, MySQL veritabanı güncellenmez. İşte Android studio kullanarak MySQL veritabanına veri eklenemiyor

public class MainActivity extends AppCompatActivity { 

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

} 

public void userReg(View view){ 
    startActivity(new Intent(this, Register.class)); 

} 

public void userLogin(View view){ 

    } 
} 

kayıt etkinliği için kodudur: İşte kodudur İşte
public class Register extends Activity { 

    EditText etName, etUsername, etPassword; 
    String name, user_name, user_pass; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 

     etName = (EditText)findViewById(R.id.name); 
     etUsername = (EditText)findViewById(R.id.new_user_name); 
     etPassword = (EditText)findViewById(R.id.new_user_pass); 
    } 

    public void userReg(View view){ 

     name = etName.getText().toString(); 
     user_name = etUsername.getText().toString(); 
     user_pass = etPassword.getText().toString(); 

     String method = "register"; 
     BackgroundTask backgroundTask = new BackgroundTask(this); 
     backgroundTask.execute(method,name,user_name,user_pass); 
     finish(); 

    } 
} 

Bir localhostla Baby kullanmak BackgroundTask

için kod
public class BackgroundTask extends AsyncTask<String, Void, String> { 

    Context ctx; 
    BackgroundTask(Context ctx){ 
     this.ctx = ctx; 
    } 

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

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

     String reg_url = "http://10.0.2.2/webapp/register.php"; 
     String login_url = "http://10.0.2.2/webapp/login.php"; 
     String method = params[0]; 
     if (method.equals("register")) { 
      String name = params[1]; 
      String user_name = params[2]; 
      String user_pass = params[3]; 
      try { 
       URL url = new URL(reg_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       //httpURLConnection.setDoInput(true); 
       OutputStream OS = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8")); 
       String data = URLEncoder.encode("user", "UTF-8") + "=" + URLEncoder.encode(name, "UTF-8") + "&" + 
         URLEncoder.encode("user_name", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8") + "&" + 
         URLEncoder.encode("user_pass", "UTF-8") + "=" + URLEncoder.encode(user_pass, "UTF-8"); 
       bufferedWriter.write(data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       OS.close(); 
       InputStream IS = httpURLConnection.getInputStream(); 
       IS.close(); 
       //httpURLConnection.connect(); 
       httpURLConnection.disconnect(); 
       return "Registration Success..."; 
      } 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(ctx,result,Toast.LENGTH_LONG).show(); 
    } 
} 

ve ben server ana sayfamı localhost yerine, localhost: 81 ile açabilir. Bu yüzden bu http://10.0.2.2/'u IP adresi olarak kullanmam gerekip gerekmediğini merak ediyorum.

PHP dosyası aşağıdaki şekilde çalışması gerekir: init.php:

<?php 
$db_name = "webappdb"; 
$mysql_user = "root"; 
$mysql_pass = "root"; 
$server_name = "localhost"; 
$con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name); 
?> 

register.php: nerede yanlış

<?php 
require "init.php"; 
$name = $_POST["user"]; 
$user_name = $_POST["user_name"]; 
$user_pass = $_POST["user_pass"]; 
$sql_query = "insert into user_info values('$name','$user_name','$user_pass');"; 
?> 

Birisi söyle lütfen. Teşekkürler.

cevap

0

register.php'de, sorguyu yürütmek için mysqli_query eklemeniz gerekir. senin register.php

$sql_query = "insert into user_info values('$name','$user_name','$user_pass');";

yılında

<?php 
require "init.php"; 
$name = $_POST["user"]; 
$user_name = $_POST["user_name"]; 
$user_pass = $_POST["user_pass"]; 
$sql_query = "insert into user_info values('$name','$user_name','$user_pass')"; 
mysqli_query($con,$sql_query); 
?> 
0

verileri eklemek istediğiniz sütun adlarını yazın. Bu php komut dosyasındaki sütun adlarını kaçırıyorsunuz.

İlgili konular