簡體   English   中英

PHP無法獲取插入的最后一條記錄的ID

[英]PHP Can't get the ID of Last Record Inserted

我正在嘗試獲取插入到phpMyAdmin表中的最后一條記錄的ID,但到目前為止我只得到0。

我幾乎嘗試了所有方法(例如,此答案的解決方案: 鏈接或此頁面推薦的內容: link ),但我無法使其正常運行。

我的表具有作為主鍵的列ID,並標記為AUTO_INCREMENT。

我使用一個函數查詢來建立與數據庫的連接,然后執行查詢:

function query($sql) {
    $conn = mysqli_connect ( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME );
    // Check connection
    if (mysqli_connect_errno ()) {
        echo 'connection failed: ' . mysqli_connect_error ();
    }
    // Check if the server is alive
    if (mysqli_ping ( $conn )) {
        // echo 'Connection is ok';
    } else {
        echo 'Error: ' . mysqli_error ( $dbc );
    }

    $sql = mysqli_query ( $conn, $sql );
    $last_id = mysqli_insert_id( $conn );
    $num_rows = mysqli_num_rows ( $sql );
    $result = mysqli_fetch_assoc ( $sql );

    return array (
            "num_rows" => $num_rows,
            "result" => $result,
            "sql" => $sql,
            "last_id" => $last_id
    );
    mysqli_close($conn);
}

然后,我從另一個調用第一個函數的位置執行查詢:

function reg_shp_add($address_type, $company_name, $country, $state, $city, $zip, $street_name, $street_number, $tel){
    if($address_type=="residential"){
        $my_address_type = "r";
    }else{
        $my_address_type = "c";
    }
        $this->query ( "INSERT INTO `Addresses` (`company_name`, `street_address`, `address_two`, `zip_code`, `city_name`, `state_id`, `country_id`, `phone_number`, `res_comm_add`, `date_entered`) VALUES ('$company_name', '$street_name', '$street_number', '$zip', '$city', '$state', '$country', '$tel', '$my_address_type', CURRENT_TIMESTAMP)" );
        $address_id = $sql ['user_id'];
        $customer_id = $_COOKIE['userId'];
        $this->query ( "INSERT INTO `Cust_address_type` (`cust_id`, ` mail_address_id`, `address_type`) VALUES ('$customer_id', '$address_id', 'Shipping')" );
        return 'Address was saved.';

}

我首先嘗試從reg_shp_add函數中檢索最后一個ID,但是我想它必須從第一個ID中完成。

有人可以幫我嗎?

我測試了您的代碼,並且函數mysqli_insert_id與我正常工作了[[“ last_id”] => int(8)) 但是問題出在您的第二個功能上,即數據檢索上。

$this->query ( "INSERT INTO `Addresses` (`company_name`, `street_address`, `address_two`, `zip_code`, `city_name`, `state_id`, `country_id`, `phone_number`, `res_comm_add`, `date_entered`) VALUES ('$company_name', '$street_name', '$street_number', '$zip', '$city', '$state', '$country', '$tel', '$my_address_type', CURRENT_TIMESTAMP)" );
$address_id = $sql ['user_id'];

這里的$ sql變量是未定義的,您會想將返回值存儲到$ sql中 ,就像這樣:

$sql = $this->query ( "INSERT INTO `Addresses` (`company_name`, `street_address`, `address_two`, `zip_code`, `city_name`, `state_id`, `country_id`, `phone_number`, `res_comm_add`, `date_entered`) VALUES ('$company_name', '$street_name', '$street_number', '$zip', '$city', '$state', '$country', '$tel', '$my_address_type', CURRENT_TIMESTAMP)" );
$address_id = $sql ['user_id'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM