У меня есть несколько учетных записей пользователей, и каждая из них использует добавочный набор целых чисел для своих собственных транзакций.
Итак, каждый раз, когда пользователь открывает транзакцию, я запрашиваю последнюю максимальную цифру в его транзакции и плюс 1.
Но иногда я обнаруживал, что результат возвращает максимальный идентификатор из транзакции другого пользователя. Предположительно, последний идентификатор пользователя A = 5402, а последний идентификатор пользователя Z = 19201. Иногда пользователь A получает 19202 вместо 5403.
Это мой запрос:
SELECT MAX(CAST(id AS UNSIGNED)) as max_id FROM `transaction` WHERE `user_id` = 'A'
Таблица транзакций имеет следующий вид:
id INT PK
user_id INT
... и т. д.
Это веб-приложение, к которому одновременно подключаются несколько пользователей, и я использую mysql в качестве базы данных и php в качестве языка программирования.
Я использую CI, вот код, который я использую для получения максимального идентификатора
function get_max($table, $max_col, $col_id = NULL, $id = NULL) {
if (!empty($col_id) && !empty($id)) {
$this->db->where($col_id, $id);
}
$this->db->select("MAX(CAST($max_col AS UNSIGNED)) as max_$max_col");
$query = $this->db->get($table);
if ($query->num_rows() > 0) {
return intval($query->row_array()["max_$max_col"]);
}
return 0;
}
После получения идентификатора я вставляю его, как показано ниже:
$new_data['id'] = $this->model_share->get_max('transaction', 'id', 'user_id', $user_id) + 1;
$new_data['user_id'] = $user_id;
$this->model_share->insert('transaction', $new_data); // save data
а это деталь функции вставки
function insert($table, $data) {
$this->db->insert($table, $data);
$id = $this->db->insert_id();
if ($id db->affected_rows() > 0;
else return $id;
}
Подробнее здесь: https://stackoverflow.com/questions/457 ... sert-query
Как получить безопасный для сеанса Insert_id после запроса INSERT ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1764534299
Anonymous
У меня есть несколько учетных записей пользователей, и каждая из них использует добавочный набор целых чисел для своих собственных транзакций.
Итак, каждый раз, когда пользователь открывает транзакцию, я запрашиваю последнюю максимальную цифру в его транзакции и плюс 1.
Но иногда я обнаруживал, что результат возвращает максимальный идентификатор из транзакции другого пользователя. Предположительно, последний идентификатор пользователя A = 5402, а последний идентификатор пользователя Z = 19201. Иногда пользователь A получает 19202 вместо 5403.
Это мой запрос:
SELECT MAX(CAST(id AS UNSIGNED)) as max_id FROM `transaction` WHERE `user_id` = 'A'
Таблица транзакций имеет следующий вид:
id INT PK
user_id INT
... и т. д.
Это веб-приложение, к которому одновременно подключаются несколько пользователей, и я использую mysql в качестве базы данных и php в качестве языка программирования.
Я использую CI, вот код, который я использую для получения максимального идентификатора
function get_max($table, $max_col, $col_id = NULL, $id = NULL) {
if (!empty($col_id) && !empty($id)) {
$this->db->where($col_id, $id);
}
$this->db->select("MAX(CAST($max_col AS UNSIGNED)) as max_$max_col");
$query = $this->db->get($table);
if ($query->num_rows() > 0) {
return intval($query->row_array()["max_$max_col"]);
}
return 0;
}
После получения идентификатора я вставляю его, как показано ниже:
$new_data['id'] = $this->model_share->get_max('transaction', 'id', 'user_id', $user_id) + 1;
$new_data['user_id'] = $user_id;
$this->model_share->insert('transaction', $new_data); // save data
а это деталь функции вставки
function insert($table, $data) {
$this->db->insert($table, $data);
$id = $this->db->insert_id();
if ($id db->affected_rows() > 0;
else return $id;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/45758822/how-to-get-session-safe-insert-id-after-insert-query[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия