如何在面向对象的php中将数据从一个表获取到另一个表的外键,我有两个表,称为用户,有两个字段:id和phonenumber。另一个表是具有id,user_id,profile_image,用户名,商家名称和城镇的配置文件,其中user_id是users表中id的外键。我希望在用户表中插入电话号码,在个人资料表中获得user_id的外键。请我需要您的帮助,我是oophp的初学者。谢谢任何帮助,将不胜感激
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) {
$response = array();
// insert query
$stmt = $this->conn->prepare("INSERT INTO users(phone) values(?)");
$stmt->bind_param("s",$phone );
$result = $stmt->execute();
$new_profile_id = $stmt->insert_id;
$stmt->close();
// Check for successful insertion
if ($result) {
$profile_result = $this->createProfile_userId($new_profile_id);
// User successfully inserted
return USER_CREATED_SUCCESSFULLY;
} else {
// Failed to create user
return USER_CREATE_FAILED;
}
}
return $response;
}
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;
}
public function createProfile($profile_image, $username, $businessname,$town) {
$response = array();
$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(profile_image, username, businessname, town) values(?, ?, ?, ?)");
$stmt->bind_param("isss",$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 USER_CREATED_SUCCESSFULLY;
} else {
// Failed to create user
return USER_CREATE_FAILED;
}
return $response;
}
?>
以下文件用于调用函数。
create.php
<?php
include './DbHandler.php';
$db = new DbHandler();
$response = array();
if ((isset($_POST['profile_image']) && isset($_POST['username']) && isset($_POST['businessname']) && isset($_POST['town']))!= '') {
$profile_image = $_POST['profile_image'];
$username = $_POST['username'];
$businessname = $_POST['businessname'];
$town = $_POST['town'];
$res = $db->createProfile($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.";
}
}
?>
最佳答案
这个问题是一个android后端php API,因此要在配置文件表中轻松获取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与json一起传递给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;
}
}
?>
将电话号码插入用户,并使用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);
}
?>
用于获取json传递的参数并将手机插入用户的Android Java方法:
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.";
}
}
?>