如何在INSERT之前获取mysql行的ID

时间:2011-09-16 07:55:01

标签: php mysql database insert

我可以在INSERT之后通过mysql_insert_id()获取ID;但我想以ID-image_name.jpg的形式保存图像并将其保存在名为Image_Name的列中。如何使用即将到来的ID保存图像?或者最好在INSERT进程后保存图像文件?

4 个答案:

答案 0 :(得分:6)

在INSERT过程之后保存它是最直接的方法。

mysql_query("INSERT INTO....."); // etc. etc.
$id = mysql_insert_id();
mysql_query("UPDATE table SET image = '$image_name' WHERE id = '$id'");

答案 1 :(得分:5)

是的,最好在INSERT后保存图像。如果保存文件失败,您将要撤消INSERT(使用DELETE或回滚事务)。如果使用标准命名方案,则不必再次触摸数据库以在表中设置文件名(因为表中不需要文件名)。

答案 2 :(得分:0)

您可以使用临时唯一名称(例如20个字母的随机字符串)保存图像,并在插入完成后重命名该图像。

答案 3 :(得分:0)

正如其他人所说,在INSERT之前你无法可靠地获取ID。

如果要求图像文件名与行ID匹配,我会坚持mu的建议(在事务中插入,保存文件,更新行,执行事务)。

另一种方法(如果您没有id匹配文件名的要求)将使用uniqid()命名文件。这将允许您保存文件并使用单个查询INSERT该行,而无需保持事务处于打开状态。