如何将最后一个自动增量值作为外键到php中的另一个表

时间:2016-09-21 14:36:23

标签: php mysql database

如何从一个表中获取数据到面向对象的php中另一个表的外键,我有两个表名为 users ,其中有两个字段:id和phonenumber。另一个表是 profile ,它有id,user_id profile_image,username,businessname和town,其中user_id是users表中id的外键。我希望我在用户表中插入电话号码我在配置文件表中获得user_id的外键。我需要你的帮助我是oophp的初学者。非常感谢任何帮助

处理所有功能的Dbhandler.php

{{1}}

以下文件用于调用函数。

create.php

{{1}}

1 个答案:

答案 0 :(得分:1)

这个问题是一个android 后端php API,所以为了在profile表中轻松获取user_id ,我们不需要这个功能:

  public function createProfile_userId($user_id) {
//getUser's FNK
$stmt = $this->conn->prepare("DELETE FROM profile where user_id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->execute();

$stmt->close();
return $result;

}

但是我可以做的是回复或用json将id和phonenumber传递到android的界面后插入用户和你得到的参数之间,你可以选择id作为user_id,最后你将它设置为textview或texfield,最后用它作为输入插入到配置文件表中。

以下文件是 DbHandler.php ,其中包含两个表中插入的所有功能:

<?php
 class DbHandler {
private $conn;
  function __construct() {
    require_once dirname(__FILE__) . '/DbConnect.php';
    // opening db connection
    $db = new DbConnect();
    $this->conn = $db->connect();
   }
  public function createUser($phone) {
    // insert query
    $stmt = $this->conn->prepare("INSERT INTO users(phone) values(?)");
    $stmt->bind_param("s",$phone );
    $result = $stmt->execute();
    $stmt->close();

    // Check for successful insertion
    if ($result) {

        // User successfully inserted
   return $result;
    } else {
        // Failed to create user
        return NULL;
    }
}
}
public function createProfile($user_id $profile_image, $username,     $businessname,$town) {


$stmt =$this->conn->query("SELECT  profile_id FROM profile ORDER BY profile_id ASC") ;

$profile_id = 0;

while($row = $stmt->fetch_array()){
    $profile_id = $row['profile_id'];
}

$path = "uploads/$profile_id.png";
$actualpath = "https://localhost/GoodPriceApi/uploadImage/$path";

// insert query 
$stmt = $this->conn->prepare("INSERT INTO profile(user_id, profile_image, username, businessname, town) values(?, ?, ?, ?, ?)");
$stmt->bind_param("issss",$user_id, $profile_image, $username, $businessname, $town);

$result = $stmt->execute();

$stmt->close();
// Check for successful insertion
if ($result) {
    file_put_contents($path,base64_decode($image));

    // User successfully inserted
   return $result;

   } else {
    // Failed to create user
    return NULL;
}

}    ?&GT;

使用json将电话号码插入用户和Echo id。该文件名为NewUser.php:

     <?php
  include './DbHandler.php';
 $db = new DBHandler();
/ json response array
  $response = array("error" => FALSE); 
   if (isset($_POST['phone'])) { 
    // receiving the post params
     $phone = $_POST['phone'];
  // get the user by phone
     $user = $db->createUser($phone);
     if ($user != false) {
        // use is found
    $response["error"] = FALSE;
    //  $response["uid"] = $user["unique_id"];
      $response["user"]["id"] = $user["id"];
      $response["user"]["phone"] = $user["phone"];
        echo json_encode($response);
   } else {
    // user is not found with the credentials
    $response["error"] = TRUE;
      $response["error_msg"] = "Sorry we could not find you ";
      echo json_encode($response);
    }
   } else {
// required post params is missing
$response["error"] = TRUE;
$response["error_msg"] = "Required parameter phone is missing!";
  echo json_encode($response);
 }
  ?>

Android Java方法用于获取json传递的参数并将手机插入用户:

     private void createuser(final String phone) {
        // Tag used to cancel the request
        String tag_string_req = "req_Verfication";
        StringRequest strReq = new StringRequest(Request.Method.POST,
                Urls."127.0.0.1/myproject/NewUser.php", new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, "cerfication Response: " + response.toString());
                hideDialog();

                try {
                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");

                    // Check for error node in json
                     if (!error) {

                        JSONObject user = jObj.getJSONObject("user");
                       String phone = user.getString("phone");
                        String id = user.getString("id");

                   // pass id to another activity so that will be used as    user_id 
                   //     abfter being set on textView or on textfield and 
                    //you hide it on interface  then you convert it toString as user_id 
                        // finally you insert it in profile table with other parameters
                        // for more details send me email on :    mugwales@gmail.com
                     Intent i = new Intent(createuserAccount.this,     createuserprofile.class);
                                i.putExtra("id", id);
                                startActivity(i);
                                finish();

                           }

                           } else {
                    // Error in verfication error message
                    String errorMsg = jObj.getString("error_msg");

                   Toast.makeText(getApplicationContext(),
                           errorMsg, Toast.LENGTH_LONG).show();            }
               } catch (JSONException e) {
                // JSON error
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Json error: " +   e.getMessage(), Toast.LENGTH_LONG).show();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Verfication error Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),
                    error.getMessage(), Toast.LENGTH_LONG).show();
        }
    })

    {

        @Override
        protected Map<String, String> getParams() {

            // Posting parameters to verfication url
            Map<String, String> params = new HashMap<String, String>();
            params.put("phone",phone);
            return params;
        }
        };
 //
 //        // Adding request to request queue
       AppController.getInstance().addToRequestQueue(strReq,  tag_string_req);
    }

使用create.php文件将所有参数全部插入到配置文件中:

<?php 
 include './DbHandler.php';
 $db = new DbHandler();
$response = array();
 if ((isset($_POST['user_id']) && (isset($_POST['profile_image']) &&     isset($_POST['username']) &&       isset($_POST['businessname']) &&   isset($_POST['town']))!= '') {
    $user_id= $_POST['user_id'];
    $profile_image = $_POST['profile_image'];
     $username = $_POST['username'];
    $businessname = $_POST['businessname'];
   $town = $_POST['town'];

$res = $db->createProfile($user_id, $profile_image, $username, $businessname,$town);

if ($res == USER_CREATED_SUCCESSFULLY) {      
    $response["error"] = false;
    $response["message"] = "Profile created successfully";
} else if ($res == USER_CREATE_FAILED) {
    $response["error"] = true;
    $response["message"] = "Sorry! Error occurred during profile creation.";
} 
} 
?>