我有一个应用程序,它保存了附近所有餐馆的数据库。 添加新条目时,可以选择添加餐馆的一些图像。
现在问题: 我想将不同的餐厅图像分类为单独的文件夹,以存储在mysql自动增量ID中的餐馆ID命名。这里唯一的问题是,我事先不知道那个id。
表单示例:
text input - title
text input - address
text input - phone
file input - image
file input - image
那么,我现在该怎么办?
予。获取最后一个id,锁定表,创建id命名的文件夹,将图像存储在内部,将信息存储到mysql数据库,包括图像路径,解锁表。
或
II。将除图像路径之外的所有信息存储到mysql数据库,使用PHP mysql_insert_id,创建id命名的文件夹,将图像存储在内部,并将图像路径存储到mysql数据库。
或
III。更好的解决方案?
答案 0 :(得分:2)
这种事情通常用你的选择II来完成。在数据库中存储主要信息行,通过mysql_insert_id()
或本机MySQL LAST_INSERT_ID()
函数获取最后一个插入ID,然后根据需要继续在任何相关表中存储行,并创建要存储的映像目录文件系统数据。
假设您打算存储在数据库中的图像路径将进入与主餐厅表之间具有一对多关系的不同表,您仍需要知道最后一个插入ID以插入它们。不要担心在多个操作中执行此操作 - 这正是大多数RDBMS具有LAST_INSERT_ID()
功能的原因。
答案 1 :(得分:1)
如果您使用的是自动增量色谱柱。您可以在insert语句之后调用last_insert_id()函数来检索最后插入的记录的id。
请参阅此链接以获取文档:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
重要的是你在同一个事务/连接中执行此操作,否则值可能是错误的。
答案 2 :(得分:1)
我认为不需要使用餐厅的ID来整理图片 - 特别是因为您遇到了您描述的时间问题。我创建了另一个唯一的ID - 称之为picture_folder_id或其他东西 - 并使用它来命名图片的文件夹。只要您对该id强制执行唯一性,就不会发生任何冲突,并且您不会遇到任何计时问题或锁定。