如何从一个表中获取数据到面向对象的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}}
答案 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.";
}
}
?>