gpt4 book ai didi

php - 使用 insert_id 获取自动递增 id

转载 作者:可可西里 更新时间:2023-11-01 07:56:09 28 4
gpt4 key购买 nike

我正在尝试在新用户注册时从我的“用户”表中获取自动递增 ID,并能够在将用户插入“用户”表后立即将该 ID 用于另一个查询。

我想将“users”表的“id”用于“payment_status”表中的“user_id”。我正在尝试不同的方法来使用 insert_id 函数,但我无法在我的第一个查询中获取要转储的 id。即使那样,当我能够将其转储时,我也不确定如何从中获取它并将其用于我想做的事情。谁能提供一些关于如何执行此操作的指导?

if($validation->passed()) {
$user = new User();

$salt = Hash::salt(32);

try {
$user->create(array(
'firstname' => Input::get('firstname'),
'lastname' => Input::get('lastname'),
'email' => Input::get('email'),
'phone_number' => Input::get('phone_number'),
'username' => Input::get('username'),
'password' => Hash::make(Input::get('password'), $salt),
'salt' => $salt,
'joined' => date('Y-m-d H:i:s'),
'group' => 1,
//var_dump($id->insert_id)
var_dump(mysqli::$insert_id)
));
$success = "You have successfully created an account. We will notify you once the account has been approved. Then you will be able to login.";
echo $success;


//Query to add user's name to payment_status db table

if(isset($_POST['submit'])){
$id = ( isset( $_SESSION['id'] ) ? $_SESSION['id'] : "" );
$user_id = ( isset( $_SESSION['id'] ) ? $_SESSION['id'] : "" );
$firstname = Input::get('firstname');
$payment_name = "Owes";
$payment_id = 1;
$payment_amount = 0;



$con = mysqli_connect("localhost","root","","db");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $con->prepare("INSERT INTO payment_status (id, user_id, firstname, payment_name, payment_id, payment_amount) VALUES (?, ?, ?, ?, ?, ?)");

if ( false===$stmt ) {
// Check Errors for prepare
die(' Owes DB prepare() failed: ' . htmlspecialchars($con->error));
}
$stmt->bind_param('iissii', $id, $user_id, $firstname, $payment_name, $payment_id, $payment_amount);
if ( false===$stmt ) {
// Check errors for binding parameters
die('Owes DB bind_param() failed: ' . htmlspecialchars($stmt->error));
}
$stmt->execute();

if ( false===$stmt ) {
die('execute() failed: ' . htmlspecialchars($stmt->error));
}
// Debug
var_dump($con->insert_id);

// Output:
// int(1)
}

更新:添加了用户类别

<?php
class User {
private $_db,
$_data,
$_sessionName,
$_cookieName,
$_isLoggedIn;

public function __construct($user = null) {
$this->_db = DB::getInstance();

$this->_sessionName = Config::get('session/session_name');
$this->_cookieName = Config::get('remember/cookie_name');

if(!$user) {
if(Session::exists($this->_sessionName)) {
$user = Session::get($this->_sessionName);

if($this->find($user)) {
$this->_isLoggedIn = true;
} else {
// process Logout
}
}
} else {
$this->find($user);
}
}

public function update($fields = array(), $id = null) {

if(!$id && $this->isLoggedIn()) {
$id = $this->data()->id;
}
//echo $this->_db->update('users', $id, $fields);

//if(!$this->_db->update('users', $id, $fields)) {
//throw new Exception('There was a problem updating!');
//}
try {
if(!$this->_db->update('users', $id, $fields)) {
throw new Exception('There was a problem updating!');
}
}
catch(Exception $e) {
echo "An error occurred";
throw $e;
}
finally {
//This overrides the exception as if it were never thrown
return "\nException erased";
}
try {
echo asdf();
}
catch(Exception $e) {
echo "\nResult: " . $e->getMessage();
}
//if(!$this->_db->update('users', $id, $fields)) {
// throw new Exception('There was a problem updating!')->getMessage();
//}
}

public function create($fields = array()) {


if(!$this->_db->insert('users', $fields)) {
throw new Exception('There was a problem creating an account:' . $this->_db->errorMessage());

}
}

public function find($user = null) {
if($user) {
$field = (is_numeric($user)) ? 'id' : 'username';
$data = $this->_db->get('users', array($field, '=', $user));

if($data->count()) {
$this->_data = $data->first();
return true;
}
}
return false;
}

public function login($username = null, $password = null, $remember = false) {

if(!$username && !$password && $this->exists()) {
Session::put($this->_sessionName, $this->data()->id);
} else {
$user = $this->find($username);

if($user) {
if($this->data()->password === Hash::make($password, $this->data()->salt)) {
Session::put($this->_sessionName, $this->data()->id);

if($remember) {
$hash = Hash::unique();
$hashCheck = $this->_db->get('users_session', array('user_id', '=', $this->data()->id));

if(!$hashCheck->count()) {
$this->_db->insert('users_session', array(
'user_id' => $this->data()->id,
'hash' => $hash
));
} else {
$hash = $hashCheck->first()->hash;
}

Cookie::put($this->_cookieName, $hash, Config::get('remember/cookie_expiry'));
}
return true;
}
}

}
return false;
}

public function hasPermission($key) {
$group = $this->_db->get('groups', array('id', '=', $this->data()->group));

if($group->count()) {
$permissions = json_decode($group->first()->permissions, true);

if($permissions[$key] == true) {
return true;
}
}
return false;
}

public function exists() {
return (!empty($this->_data)) ? true : false;
}

public function logout() {

$this->_db->delete('users_session', array('user_id', '=', $this->data()->id));

Session::delete($this->_sessionName);
Cookie::delete($this->_cookieName);
}

public function data() {
return $this->_data;
}
public function isLoggedIn() {
return $this->_isLoggedIn;
}
}
?>

最佳答案

您应该在创建查询后使用 mysqli::$insert_id

$user->create(array(
'firstname' => Input::get('firstname'),
'lastname' => Input::get('lastname'),
'email' => Input::get('email'),
'phone_number' => Input::get('phone_number'),
'username' => Input::get('username'),
'password' => Hash::make(Input::get('password'), $salt),
'salt' => $salt,
'joined' => date('Y-m-d H:i:s'),
'group' => 1,
));
var_dump(mysqli::$insert_id);

也许会是

var_dump($user->insert_id);

关于php - 使用 insert_id 获取自动递增 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31374850/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com