[英]PHP Always returns null Values
I am making Android Application that allow login register and get data like, user ID, phone number,... The Processes are works well, but the data that comes are always Null. 我正在制作允许登录注册并获取数据(如用户ID,电话号码等)的Android应用程序。进程运行良好,但随之而来的数据始终为Null。
Here is the Function in Android For Login only, it the same for Registration and getting data but with other Params 这是Android中仅用于登录的功能,与注册和获取数据相同,但其他参数相同
private class AsyncDataClass extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 5000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpPost httpPost = new HttpPost(params[0]);
String jsonResult = "";
//assigning the Params from EditText(s)
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", params[1]));
nameValuePairs.add(new BasicNameValuePair("password", params[2]));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return jsonResult;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
System.out.println("Resulted Value: " + result);
if(result.equals("") || result == null){
pDialog.dismiss();
Toast.makeText(MainActivity.this, "Server connection failed", Toast.LENGTH_LONG).show();
return;
}
int jsonResult = returnParsedJsonObject(result);
if(jsonResult == 0){
pDialog.dismiss();
Toast.makeText(MainActivity.this, "Invalid username or password", Toast.LENGTH_LONG).show();
return;
}
//When the login is Correct
//get_phone and get_id are always null (first problem)
if(jsonResult == 1){
SharedPreferences Preferences = getSharedPreferences("MYPREFERNCES", MODE_PRIVATE);
SharedPreferences.Editor editor = Preferences.edit();
editor.putBoolean("loggin", checkres);
editor.putString("SAVED_USERNAME", enteredUsername);
editor.putString("SAVED_PHONE", get_phone);
editor.putString("SAVED_ID",get_id );
editor.apply();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.putExtra("USERNAME", enteredUsername);
intent.putExtra("MESSAGE", "You have been successfully login to Direct");
startActivity(intent);
finish();
}
}
private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
try {
while ((rLine = br.readLine()) != null) {
answer.append(rLine);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return answer;
}
}
//getting Json result
private int returnParsedJsonObject(String result){
JSONObject resultObject = null;
int returnedResult = 0;
try {
resultObject = new JSONObject(result);
returnedResult = resultObject.getInt("success");
get_phone = resultObject.getString("phonenum");
get_id = resultObject.getString("id");
} catch (JSONException e) {
e.printStackTrace();
}
return returnedResult;
}
Here is the PHP file that The Android App hits.. 这是Android应用程序命中的PHP文件。
<?php
require_once 'include/user.php';
$username = "";
$password = "";
$email = "";
if(isset($_POST['username'])){
$username = $_POST['username'];
}
if(isset($_POST['password'])){
$password = $_POST['password'];
}
if(isset($_POST['email'])){
$email = $_POST['email'];
}
// Instance of a User class
$userObject = new User();
//Functions..
// Registration of new user
if(!empty($username) && !empty($password) && !empty($email)){
$hashed_password = md5($password);
$json_registration = $userObject->createNewRegisterUser($username, $hashed_password, $email);
echo json_encode($json_registration);
}
// User Login
if(!empty($username) && !empty($password) && empty($email)){
$hashed_password = md5($password);
$json_array = $userObject->loginUsers($username, $hashed_password);
echo json_encode($json_array);
}
// getting data >> here I sent the ID to the database via $username but it is 'INT'
if(!empty($username) && empty($password) && empty($email)){
$json_array = $userObject->getdata($username);
echo json_encode($json_array);
}
?>
Here is the class which is called.. 这是被称为类。
private $db;
private $db_table = "users";
private $result1 = "";
private $result2 = "";
public function __construct(){
$this->db = new DbConnect();
}
public function isLoginExist($username, $password){
$query1 = "SELECT `id` FROM users WHERE username = '$username' AND password = '$password' Limit 1";
$result1 = mysqli_query($this->db->getDb(), $query1);
if(mysqli_num_rows($result1) > 0){
$query2 = "SELECT `email` FROM users WHERE username = '$username' Limit 1";
$result2 = mysqli_query($this->db->getDb(),$query2);
mysqli_close($this->db->getDb());
return true;
}
mysqli_close($this->db->getDb());
return false;
}
public function isIDExist($username){
$query1 = "SELECT `username` FROM users WHERE 'id' = '$username' Limit 1";
$result1 = mysqli_query($this->db->getDb(),$query1);
if(mysqli_num_rows($result1) > 0){
$query2 = "SELECT `email` FROM `users` WHERE `id` = '$username' Limit 1";
$result2 = mysqli_query($this->db->getDb(),$query2);
mysqli_close($this->db->getDb());
return true;
}
mysqli_close($this->db->getDb());
return false;
}
public function createNewRegisterUser($username, $password, $email){
$json = array();
$query = "insert into users (username, password, email) values ('$username', '$password', '$email')";
$inserted = mysqli_query($this->db->getDb(), $query);
if($inserted == 1){
$query1 = "SELECT `id` FROM `users` WHERE `username` = '$username' Limit 1";
$result1 = mysqli_query($this->db->getDb(), $query1);
$json['success'] = 1;
$json['id'] = $result1;
}else{
$json['success'] = 0;
$json['id'] = "";
}
mysqli_close($this->db->getDb());
return $json;
}
public function getdata($username){
$json = array();
$isitexists = $this->isIDExist($username);
if($isitexists){
$json['success'] = 1;
$json['username'] = $result1;
$json['phonenum'] = $result2;
}else{
$json['success'] = 0;
$json['username'] = "";
$json['phonenum'] = "";
}
return $json;
}
public function loginUsers($username, $password){
$json = array();
$canUserLogin = $this->isLoginExist($username, $password);
if($canUserLogin){
$json['success'] = 1;
$json['id'] = $result1;
$json['phonenum'] = $result2;
}else{
$json['success'] = 0;
$json['id'] = "";
$json['phonenum'] = "";
}
return $json;
}
}
?>
Try code like that.. if(isset($inserted)) 试试这样的代码.. if(isset($ inserted))
public function createNewRegisterUser($username, $password, $email){
$query = "insert into users (username, password, email) values ('$username', '$password', '$email')";
$inserted = mysqli_query($this->db->getDb(), $query);
if(isset($inserted) ){
$json['success'] = 1;
}else{
$json['success'] = 0;
}
mysqli_close($this->db->getDb());
return $json;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.