Используя LAST_INSERT_ID () через PHP?

Когда я выполняю следующее в консоли MySQL, оно хорошо работает:

INSERT INTO videos (embed_code) VALUES ('test code here');
SELECT LAST_INSERT_ID();

Но, когда я выполняю вышеупомянутые запросы через PHP, результат пуст.

При абстракции данных я использую названный класс доступа к базе данных DB. Это - то, как я попробовал вышеупомянутые запросы через PHP:

$embedCode = htmlentities($_POST['embed_code']);

//Insert video in database **WORKS**
DB::query("INSERT INTO videos (embed_code) VALUES ('$embedCode');");

//Retrieve id **DOES NOT WORK**
$row = DB::getSingleRow("SELECT LAST_INSERT_ID();");
$videoId = $row[0];

Это не надежно, чтобы я выбрал новый идентификатор embed_code, поскольку embed_code мог быть повторен.

Спасибо!

7
задан Mike Moore 6 August 2010 в 16:10
поделиться

4 ответа

Разве в вашем классе базы данных нет функции для получения последнего идентификатора вставки? В противном случае попробуйте mysql_insert_id ().

http://nl.php.net/mysql_insert_id

5
ответ дан 7 December 2019 в 09:55
поделиться

В PHP есть функция mysql_insert_id , которая даст тот же результат, что и запрос SELECT LAST_INSERT_ID (); .

1
ответ дан 7 December 2019 в 09:55
поделиться

Вы можете попробовать использовать mysql_insert_id функцию PHP.

Я думаю, что происходит то, что каждый вызов DB::query происходит в другой транзакции, поэтому $row пустой. Возможно, вы можете прочитать документацию по DB:query, чтобы попробовать выполнить оба вызова в одной транзакции.

0
ответ дан 7 December 2019 в 09:55
поделиться

Для этого существуют специальные функции - вы не должны использовать версию SQL, так как она не работает.

В библиотеке MySQL вы должны использовать функцию mysql_insert_id, в то время как объект mysqli имеет свойство insert-id. Конечно, это свойство уже может быть открыто в любом классе БД, который вы используете.

0
ответ дан 7 December 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: