Getting auto increment id using insert_id

I am trying to get the auto increment id from the "users" table when a new user logs in and will be able to use that id for another query, which I have right after the user is inserted into the "users" table.

I want to use table 'users' 'id' for 'user_id' in my table "payment_status". I'm trying different ways to use the function insert_id

, but I can't seem to get the id to reset in my first request. Even when I can get it to dump, I'm not sure how to get it out of this and use it for what I am trying to do. Can anyone provide some guidance on how to do this?

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 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)
            }

      

UPDATE: ADDED USER CLASS

<?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;
    }
}
?>

      

+3


source to share


1 answer


You must use mysqli :: $ insert_id after your create request

$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);

      



Or maybe it will

var_dump($user->insert_id);

      

+6


source







All Articles