Как получить последний идентификатор вставки из базы данных MySQL в PHP? - PullRequest
0 голосов
/ 24 августа 2018

Я хочу получить последний идентификатор вставки из корзины таблицы в моем операторе else после вставки.Но я не получаю удостоверение личности.Пожалуйста, проверьте мой код и предложите, что я делаю неправильно:

// Check to see if the cart COOKIE exists
if ($cart_id != '') {
// Here I want to update but not getting $cart_id, so everytime insert query fire in else statement

}else{

$items_json = json_encode($item);
$cart_expire = date("Y-m-d H:i:s",strtotime("+30 days"));
$db->query("INSERT INTO cart (items,expire_date) VALUES ('{$items_json}','{$cart_expire}') ");
$cart_id = $db->insert_id; // Here is the problem
setcookie(CART_COOKIE,$cart_id,CART_COOKIE_EXPIRE,'/',$domain,false);
}

Ваши предложения будут приветствоваться.

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

Вместо:

$db->query("INSERT INTO cart (items,expire_date) VALUES ('{$items_json}','{$cart_expire}') ");
$cart_id = $db->insert_id; // Here is the problem

Используйте это непосредственно из документации :

$query = "INSERT INTO cart (items,expire_date) VALUES ('{$items_json}','{$cart_expire}') ";
mysqli_query($db, $query);
$cart_id = mysqli_insert_id($db);
0 голосов
/ 24 августа 2018

Или получите следующее автоинкрементное значение перед вставкой:

$query = $db->query("SHOW TABLE STATUS LIKE 'cart'");
$next = $query->fetch(PDO::FETCH_ASSOC);
echo $next['Auto_increment'];
0 голосов
/ 24 августа 2018

ПОЛУЧИТЕ значение столбца идентификатора ПОСЛЕ вставки:

create table student (
  id int primary key not null auto_increment,
  name varchar(20)
);

insert into student (name) values ('John');

select @@identity; -- returns 1

insert into student (name) values ('Peter');

select @@identity; -- returns 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...