Некоторые приемы потока управления, finally
вокруг return
оператор:
int getCount() {
try { return 1; }
finally { System.out.println("Bye!"); }
}
правила для определенное присвоение проверит, что последняя переменная всегда присваивается посредством простого анализа потока управления:
final int foo;
if(...)
foo = 1;
else
throw new Exception();
foo+1;
Если вы используете PDO, используйте PDO :: lastInsertId
.
Если вы используете Mysqli, используйте mysqli :: $ insert_id
.
Если вы все еще используете Mysql:
Пожалуйста, не используйте функции
mysql _ *
в новом коде . Они больше не поддерживаются и официально признаны устаревшими . Видите красную рамку ? Вместо этого узнайте о подготовленных операторах и используйте PDO или MySQLi - , эта статья поможет вам решить, какие. Если вы выбираете PDO, вот хороший учебник .
Но если вам нужно, используйте mysql_insert_id
.
Используйте mysql_insert_id () .
См. Аналогичный вопрос здесь
Можно использовать mysql_insert_id ()
,
но есть одно конкретное замечание по поводу его использования, вы должны вызвать его после выполнения запроса INSERT, то есть в том же сеансе сценария.
Если вы воспользуетесь им, он не будет работать правильно.
То, что вы написали, принесло бы вам наилучший id
, если бы они были уникальными и автоматически увеличивались, что было бы хорошо, если бы вы не возражали с проблемами параллелизма.
Поскольку вы используете MySQL в качестве базы данных, существует специальная функция LAST_INSERT_ID ()
, которая работает только с текущим соединением, в котором была произведена вставка.
PHP предлагает специальную функцию для этого тоже под названием mysql_insert_id
.
there is a function to know what was the last id inserted in the current connection
mysql_query('INSERT INTO FOO(a) VALUES(\'b\')');
$id = mysql_insert_id();
plus using max is a bad idea because it could lead to problems if your code is used at same time in two different sessions.
That function is called mysql_insert_id