[英]how to post data into mysql using android volley
我只是想创建一个注册页面,其中存储了我确实发布过的用户数据,但是没有数据存储在数据库phpfile中
<?php
if($_SERVER['REQUEST_METHOD']=='GET'){
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$name = $_POST['name'];
$phonenum = $_POST['phonenum'];
$address = $_POST['addresstext'];
require_once('config.php');
$sql = "INSERT INTO users (name,username,email,password,phonenum,address) VALUES ('$name','$username','$email','$password','$phonenum','$address')";
$r = mysqli_query($dp,$sql);
if($r){
echo "Successfully Registered";
}
else{
echo "Could not register";
}
mysqli_close($dp);
}
?>
注册页面
public class DrSignup extends Activity implements View.OnClickListener{
public static final String REGISTER_URL = "http://giclub.esy.es/Register.php";
public static final String KEY_USERNAME = "username";
public static final String KEY_PASSWORD = "password";
public static final String KEY_EMAIL = "email";
public static final String KEY_NAME = "name";
public static final String KEY_PHONENUM = "phonenum";
public static final String KEY_ADDRESS = "address";
EditText usernametext,nametext,emailtext,phonenumtext,addresstext,passwordtext;
TextView link_login;
ImageView profileimg;
Button btn_signup;
private static int RESULT_LOAD_IMAGE = 1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.drsingup);
link_login = (TextView) findViewById(R.id.link_login);
profileimg = (ImageView) findViewById(R.id.profileimg);
btn_signup = (Button) findViewById(R.id.btn_signup);
usernametext = (EditText) findViewById(R.id.username);
nametext = (EditText) findViewById(R.id.name);
emailtext = (EditText) findViewById(R.id.email);
phonenumtext = (EditText) findViewById(R.id.phonenumber);
addresstext = (EditText) findViewById(R.id.addresstext);
passwordtext = (EditText) findViewById(R.id.password);
link_login.setOnClickListener(this);
profileimg.setOnClickListener(this);
btn_signup.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Intent I = new Intent(this,WelcomeActivity.class);
if (view == link_login)
{
startActivity(I);
finish();
}
else if (view == profileimg){
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
else if (view == btn_signup){
registerUser();
}
}
private void registerUser() {
final String username = usernametext.getText().toString().trim();
final String password = passwordtext.getText().toString().trim();
final String email = emailtext.getText().toString().trim();
final String name = nametext.getText().toString().trim();
final String phonenum = phonenumtext.getText().toString().trim();
final String address = addresstext.getText().toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(DrSignup.this,response,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(DrSignup.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put(KEY_USERNAME,username);
params.put(KEY_PASSWORD,password);
params.put(KEY_EMAIL, email);
params.put(KEY_NAME,name);
params.put(KEY_ADDRESS,address);
params.put(KEY_PHONENUM, phonenum);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
profileimg.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
}
什么都没烤,logcat中显示无错误,这是什么问题?
实际上,您没有得到任何响应,因为在服务器端,您正在将请求方法与get进行比较,但是实际上您是在向服务器发送数据,而不是从中检索数据,因此请像这样进行更改
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$name = $_POST['name'];
$phonenum = $_POST['phonenum'];
$address = $_POST['addresstext'];
require_once('config.php');
$sql = "INSERT INTO users (name,username,email,password,phonenum,address) VALUES ('$name','$username','$email','$password','$phonenum','$address')";
$r = mysqli_query($dp,$sql);
if($r){
echo "Successfully Registered";
}
else{
echo "Could not register";
}
mysqli_close($dp);
}
?>
@ Amr93我认为您正在以post方法和您要检查的API发送数据
“请求方法== GET”
看这个
取代这个
($ _SERVER ['REQUEST_METHOD'] =='GET'){
同
($ _SERVER ['REQUEST_METHOD'] =='POST'){
更改
if($_SERVER['REQUEST_METHOD']=='GET')
至
if($_SERVER['REQUEST_METHOD']=='POST')
上传图片 :
在服务器端,声明变量以为每个图像分配唯一名称,并声明要在其中存储图像的路径
例如: $path = "uploads/$id.png";
$actualpath = "http://url_path/xyz/$path
;
之后,将$actualpath
插入数据库
注意:不要忘记在服务器端解码
您在Android代码中使用请求类型“ POST”
StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
并在php代码中使用“ GET”请求进行处理。 所以如果条件代码不执行
if($_SERVER['REQUEST_METHOD']=='GET')
更改为
if($_SERVER['REQUEST_METHOD']=='POST')
它将解决您的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.