java - 如何使用 php android volly 将数据输入到我的 sql 中?
问题描述
该应用程序正在与 api 连接,但数据未输入到数据库中,它在不安全成功时出现错误消息。
如何解决?
这是我的register.php
代码。
if ($_SERVER['REQUEST_METHOD'] =='POST') {
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$emailid = $_POST['email'];
$password = $_POST['password'];
$cpassword = $_POST['cpassword'];
$password = password_hash($password, PASSWORD_DEFAULT);
require_once 'uconnection.php';
$sql = "INSERT INTO user (firstname, lastname, email, password, confirmpassword) VALUES ('$fname', '$lname', '$emailid', '$cpassword')";
if ( mysqli_query($conn, $sql) ) {
$result["success"] = "1";
$result["message"] = "success";
echo json_encode($result);
mysqli_close($conn);
} else {
$result["success"] = "0";
$result["message"] = "error";
echo json_encode($result);
mysqli_close($conn);
}
}
这是我的 android 应用程序的 android mainactivity 代码。
public class MainActivity extends AppCompatActivity {
private EditText fname,lname,emailid,password,cpassword;
private Button buttonregister;
private ProgressDialog pDialog;
private static String URL_REGISTER = "http://192.168.68.74:80/loginregistervollyphp/register.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fname = findViewById(R.id.edtxt_fname);
lname = findViewById(R.id.edtxt_lname);
emailid = findViewById(R.id.edtxt_emailid);
password = findViewById(R.id.edtxt_password);
cpassword = findViewById(R.id.edtxt_cpassword);
buttonregister = findViewById(R.id.btn_r_signup);
buttonregister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
register_user();
}
});
}
/**
* Display Progress bar while registering
*/
private void displayLoader() {
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Signing Up.. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
private void register_user(){
displayLoader();
final String fname = this.fname.getText().toString().trim();
final String lname = this.lname.getText().toString().trim();
final String emailid = this.emailid.getText().toString().trim();
final String password = this.password.getText().toString().trim();
final String cpassword = this.cpassword.getText().toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_REGISTER,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pDialog.dismiss();
try {
JSONObject jsonObject = new JSONObject(response);
String success = jsonObject.getString("success");
Log.d("sucs",success);
if (success.equals("1")){
Toast.makeText(MainActivity.this, "Register Successful :) ", Toast.LENGTH_SHORT).show();
}
else if (success.equals("0")){
Toast.makeText(MainActivity.this, "Register Error!", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "Register Error :( "+ e.toString(), Toast.LENGTH_SHORT).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pDialog.dismiss();
Toast.makeText(MainActivity.this, "Register Error :("+ error.toString(), Toast.LENGTH_SHORT).show();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("fname",fname);
params.put("lname",lname);
params.put("email",emailid);
params.put("password",password);
params.put("cpassword",cpassword);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
解决方案
在您的代码中进行如下更改:
header("Content-Type: application/json"); //add this in your php code
if ( mysqli_query($conn, $sql) ) {
$result["success"] = "1";
$result["message"] = "success";
} else {
$result["success"] = "0";
$result["message"] = "error";
}
echo json_encode($result);
mysqli_close($conn);
推荐阅读
- reactjs - React/Next.js 推荐设置后端 API URL 等常量的方法
- javascript - 导航栏链接到使用该标签在 gatbysjs 中创建的页面不起作用
- physics - 如何确定何时加速和减速以到达给定目的地?
- c# - 无法使用 UTC 和非 UTC 格式的日期时间反序列化 JSON
- c# - C# 选择现有 Excel 文件中的特定行
- jqassistant - 如何在 Java 中查询某个 Java 方法的调用并访问所有参数值?
- gzip - Contenful 中的 GZip 压缩
- ios - 每 n 天重复一次本地通知
- python-3.x - 使用 * 列出解包 python
- java - 我怎样才能知道经度和纬度点?