Как получить идентификатор строки mysql перед INSERT - PullRequest
3 голосов
/ 16 сентября 2011

Я могу получить идентификатор сразу после INSERT с помощью mysql_insert_id ();но я хочу сохранить изображение в виде ID-image_name.jpg и сохранить его в столбце с именем Image_Name.Как я могу сохранить изображение с предстоящим идентификатором?Или файл образа лучше сохранить после процесса INSERT?

Ответы [ 4 ]

6 голосов
/ 16 сентября 2011

Сохранение после процесса INSERT - самый простой способ.

mysql_query("INSERT INTO....."); // etc. etc.
$id = mysql_insert_id();
mysql_query("UPDATE table SET image = '$image_name' WHERE id = '$id'");
5 голосов
/ 16 сентября 2011

Да, лучше сохранить изображение после ВСТАВКИ. Вы захотите отменить INSERT (либо с помощью DELETE, либо откатить транзакцию), если сохранение файла не удастся, конечно. Если вы используете стандартную схему именования, вам не нужно снова прикасаться к базе данных, чтобы задать имя файла в таблице (потому что в таблице не должно быть имени файла).

0 голосов
/ 16 сентября 2011

Как уже говорили другие, вы не можете надежно получить ID до ВСТАВКИ.

Если требуется, чтобы имя файла изображения совпадало с идентификатором строки, я бы придерживался предложения мю (ВСТАВИТЬ в транзакцию, сохранить файл, ОБНОВИТЬ строку, ЗАДАТЬ транзакцию).

Альтернативой (если у вас нет требования идентификатора, совпадающего с именем файла) было бы присвоить файлу имя, используя uniqid () . Это позволит вам сохранить файл и вставить строку одним запросом, не удерживая транзакцию открытой.

0 голосов
/ 16 сентября 2011

Вы можете сохранить изображение с временным уникальным именем, например, 20-буквенной случайной строкой, и переименовать его после завершения вставки.

...