Как надежно вставить в таблицу, а затем получить автономный номер в многопользовательской системе
Предположим, я запустил оператор вставки следующим образом:
$sql = "insert into tbl_features (feature_class, feature_name, description) values (?, ?, ?)";
$q = $pdo_conn->prepare($sql);
$q->execute(array($_GET['new_feature_class'], $_GET['new_feature_name'], $_GET['new_description']));
Затем я хочу получить идентификатор строки, которая была только что вставлена, чтобы использовать ее в другой таблице. Я мог бы использовать select max(), но как я могу быть уверен, что никто другой не сделал вставку, таким образом давая обоим пользователям один и тот же максимум, чтобы попытаться втиснуть их в другие таблицы? Я рад заблокировать всю таблицу, код запускается достаточно редко, чтобы это не имело заметного значения. Может быть, я педантичен, но хочу спать по ночам, зная, что мой код пуленепробиваемый.
1 ответ
Решение
Вы можете использовать lastInsertId для его получения: http://php.net/manual/en/pdo.lastinsertid.php.