Здравствуйте, мне нужно иметь идентификатор транзакции в поле комментария моей транзакции
mysql_query("INSERT INTO `transactiontb` (`tid`, `amount`, `comment`) VALUES (NULL,'$amount', CONCAT('Transaction # ',`tid`)')");
Как я могу это сделать?
tid
дважды. Почему бы не сделать конкат, когда вы выберете его вместо того, чтобы хранить его таким образом? Это не лучший способ.Для справки попробуйте LAST_INSERT_ID()+1)
:
INSERT INTO `transactiontb` (`tid`, `amount`, `comment`)
VALUES (NULL, '$amount', CONCAT_WS('Transaction # ', LAST_INSERT_ID()+1))
LAST_INSERT_ID()
даст идентификатор предыдущего INSERT, а не идентификатор текущего INSERT, поэтому вы должны добавить 1.
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
Сгенерированный идентификатор сохраняется на сервере
на основе подключения. Это означает, что значение, возвращаемое
Функция для данного клиента — это первое сгенерированное значение AUTO_INCREMENT.
для самого последнего утверждения, затрагивающего столбец AUTO_INCREMENT этим
клиент. На это значение не могут повлиять другие клиенты, даже если они
генерировать собственные значения AUTO_INCREMENT. Такое поведение обеспечивает
что каждый клиент может получить свой собственный идентификатор, не заботясь о
деятельность других клиентов, без необходимости в замках или
сделки.
Использовать LAST_INSERT_ID()
функция.
LAST_INSERT_ID () (без аргумента) возвращает значение BIGINT (64-разрядное)
представляющий первое автоматически сгенерированное значение, которое было установлено для
столбец AUTO_INCREMENT последней выполненной вставкой
Заявление повлиять на такой столбец.
Источник: Документация MySQL
Пример:
"INSERT INTO transactiontb(tid, amount, comment) VALUES (NULL,'" . $amount . "', CONCAT_WS('#','Transaction',LAST_INSERT_ID(id+1)))"
Просто видел, что вы также забыли поставить разделитель для вас CONCAT_WS
функция, поэтому я исправил это в примере запроса.