У меня вопрос о проблеме LastInsertId в PHP PDO.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 У меня вопрос о проблеме LastInsertId в PHP PDO.

Сообщение Anonymous »

Моя текущая среда разработки — PHP 7.2.
Это MariaDB 10.3.11.
При использовании функции LastInsertId PDO, если вы запустите еще один запрос после запроса на вставку, Значение результата lastInsertId всегда будет равно 0.
пример таблицы

Код: Выделить всё

create table test
(
id    int unsigned auto_increment comment 'PK' primary key,
title varchar(128) charset utf8mb4 not null comment 'title'
)
comment 'test';

create table test2
(
id    int unsigned auto_increment comment 'PK' primary key,
title varchar(128) charset utf8mb4 not null comment 'title'
)
comment 'test2';
Пример кода:

Код: Выделить всё

public function pdoTest()
{
$title = "test";
$id = 1;

$db = new PDO('mysql:host=;port=;dbname=;charset=utf8', '', '');

$db->beginTransaction();

$query = "INSERT INTO test (title) VALUES (:title)";
$stmt = $db->prepare($query);
$stmt->bindParam(':title', $title);
$stmt->execute();

$updateQuery = "UPDATE test2 SET title = :title WHERE id = :id";
$stmt = $db->prepare($updateQuery);
$stmt->bindParam(':id', $id);
$stmt->bindParam(':title', $title);
$stmt->execute();

echo $db->lastInsertId();
$db->commit();
}

В приведенной выше ситуации возвращаемое значение LastInsertId было 0. Я искал на сайте PHP. Кто-нибудь знает, почему LastInsertId не работает должным образом?
Мне интересно, нужно ли выполнять только запрос на вставку перед выполнением функции LastInsertId.

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-php-pdo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»