Java 无法使用Android Studio在Phpmyadmin中保存数据
我想在Android Studio 3.5上制作一个包含注册页面的活动应用程序。后端服务器正在使用本地主机使用Phpmyadmin。本地主机和Phpmyadmin之间的连接成功。但是,当我尝试使用emulator注册新帐户时,后端无法保存任何数据。代码有问题吗 Php文件Java 无法使用Android Studio在Phpmyadmin中保存数据,java,android,Java,Android,我想在Android Studio 3.5上制作一个包含注册页面的活动应用程序。后端服务器正在使用本地主机使用Phpmyadmin。本地主机和Phpmyadmin之间的连接成功。但是,当我尝试使用emulator注册新帐户时,后端无法保存任何数据。代码有问题吗 Php文件 <?php $con = mysqli_connect("localhost","root","usbw","social"); $name = $_POST["name"]; $email
<?php
$con = mysqli_connect("localhost","root","usbw","social");
$name = $_POST["name"];
$email = $_POST["email"];
$password = md5($_POST["password"]);
$con->set_charset("UTF8");
$statement = mysqli_prepare($con,"INSERT INTO register(name, email, password) VALUES (?,?,?,?)");
mysqli_stmt_bind_param($statement, "siss", $name, $email, $password);
mysqli_stmt_execute($statement);
$reponse = array();
$response["success"] = true;
echo json_encode($response);
?>
安德里奥德工作室
package com.example.home;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
EditText name, email, password;
Button submit;
String result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = (EditText)findViewById(R.id.editText);
email = (EditText)findViewById(R.id.editText3);
password = (EditText)findViewById(R.id.editText4);
submit = (Button)findViewById(R.id.button);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread thread = new Thread(multiThread);
thread.start();
try {
URL url = new URL("http://localhost:8080/Connect.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.connect();
int responseCode = connection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK){
InputStream inputStream = connection.getInputStream();
BufferedReader bufReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
String box = "";
String line = null;
while((line = bufReader.readLine()) != null) {
box += line + "\n";
}
inputStream.close();
result = box;
}
} catch(Exception e) {
result = e.toString();
}
if (name.getText().toString().trim().isEmpty()){
name.setError("請輸入名字");
name.requestFocus();
} else if (email.getText().toString().trim().isEmpty()){
email.setError("請輸入有效電郵地址");
email.requestFocus();
} else if (password.getText().toString().trim().isEmpty()){
password.setError("請輸入密碼");
password.requestFocus();
} else if (name.length() < 6) {
name.setError("用戶名長度必須最少為6");
name.requestFocus();
} else if (password.length() < 8){
password.setError("密碼長度必須最少為8");
password.requestFocus();
} else {
Intent intent = new Intent(getApplicationContext(), MainLastPage.class);
startActivity(intent);
}
}
});
}
public boolean isPassword(String password){
final String Password_PATTERN = "^(?![0-9])(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";
Pattern pattern = Pattern.compile(Password_PATTERN);
pattern.matcher(password).matches();
return true;
}
public boolean name(){
String user = name.getText().toString().trim();
if (user.isEmpty()) {
name.setError("請輸入名字!");
return false;
} else if (!isPassword(user)) {
password.setError("請輸入密碼!");
return false;
} else {
return true;
}
}
private Runnable multiThread = new Runnable(){
public void run() {
runOnUiThread(new Runnable() {
public void run() {
submit.setText(result);
}
});
}
};
}
package com.example.home;
导入androidx.appcompat.app.appcompat活动;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入java.io.BufferedReader;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.util.regex.Pattern;
公共类MainActivity扩展了AppCompatActivity{
编辑文本名称、电子邮件、密码;
按钮提交;
字符串结果;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name=(EditText)findViewById(R.id.EditText);
email=(EditText)findViewById(R.id.editText3);
密码=(EditText)findViewById(R.id.editText4);
submit=(按钮)findViewById(R.id.Button);
submit.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
线程=新线程(多线程);
thread.start();
试一试{
URL=新URL(“http://localhost:8080/Connect.php");
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod(“POST”);
connection.setDoOutput(真);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.connect();
int responseCode=connection.getResponseCode();
if(responseCode==HttpURLConnection.HTTP\u确定){
InputStream InputStream=connection.getInputStream();
BufferedReader bufReader=新的BufferedReader(新的InputStreamReader(inputStream,“utf-8”),8);
字符串框=”;
字符串行=null;
而((line=bufReader.readLine())!=null){
框+=行+“\n”;
}
inputStream.close();
结果=框;
}
}捕获(例外e){
结果=e.toString();
}
if(name.getText().toString().trim().isEmpty()){
name.setError(“請輸入名字");
name.requestFocus();
}else if(email.getText().toString().trim().isEmpty()){
email.setError(“請輸入有效電郵地址");
email.requestFocus();
}else if(password.getText().toString().trim().isEmpty()){
密码设置错误(“請輸入密碼");
password.requestFocus();
}else if(name.length()<6){
name.setError(“用戶名長度必須最少為6");
name.requestFocus();
}else if(password.length()<8){
密码设置错误(“密碼長度必須最少為8");
password.requestFocus();
}否则{
Intent Intent=新的Intent(getApplicationContext(),MainLastPage.class);
星触觉(意向);
}
}
});
}
公共布尔值isPassword(字符串密码){
最后的字符串密码_PATTERN=“^(?![0-9])(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-zA-Z]{6,16}$”;
Pattern=Pattern.compile(密码模式);
pattern.matcher(password.matches();
返回true;
}
公共布尔名称(){
字符串user=name.getText().toString().trim();
if(user.isEmpty()){
name.setError(“請輸入名字!");
返回false;
}如果(!isPassword(用户))为else{
密码设置错误(“請輸入密碼!");
返回false;
}否则{
返回true;
}
}
private Runnable多线程=new Runnable(){
公开募捐{
runOnUiThread(新的Runnable(){
公开募捐{
submit.setText(结果);
}
});
}
};
}
我认为错误在PHP文件中。首先,将4个参数传递到3行
$statement = mysqli_prepare($con,"INSERT INTO register(name, email, password) VALUES (?,?,?,?)");
mysqli_stmt_bind_param($statement, "siss", $name, $email, $password);
在您的情况下,我认为您应该删除其中一个“?”
VALUES (?,?,?)
此外,您忘记关闭该语句,因此,在结尾处:
$statement->close();
最后但并非最不重要的一点是,如果你试图发送大量数据,你应该考虑使用MySQL ListMtxsEnthLangyDATA()将其打包发送。
这与PHPmyadmin有什么关系?这不只是用来设置MySQL数据库吗?是的,是用来设置数据库的。但我不确定哪一部分是错误的。再说一次,这有什么关系?我只是一个初学者。不确定我的文件的哪一部分与我的问题有关。我应该发布什么文件给她你把访问MySQL数据库的接口和数据库本身搞混了。它连接的是MySQL服务器,而不是phpMyAdmin。