我可以通過mysql_insert_id()在INSERT之後獲得ID;但我想以ID-image_name.jpg的形式保存圖像並將其保存在名爲Image_Name的列中。如何保存即將到來的ID圖像?或者最好在INSERT過程之後保存圖像文件?如何在INSERT之前獲取mysql行的ID
回答
是的,最好在插入後保存圖像。當然,如果保存文件失敗,您將需要撤消INSERT(使用DELETE或回滾事務)。如果使用標準命名方案,則不必再次觸摸數據庫以在表中設置文件名(因爲表中不需要是文件名)。
+1不需要在表格中的文件名首先 –
爲什麼?你能解釋一下嗎? – srivani
@srivani:如果你總是把圖像稱爲'/ some/path/image- $ id。$ ext',那麼你不需要數據庫中的文件名,只需要一個可以粘貼這些部分的函數。你會想要在數據庫中的MIME類型,但會給你擴展名。一個好處是,如果您決定重新安排文件系統,則無需修復數據庫。 –
在INSERT過程之後保存它是最直接的方法。
mysql_query("INSERT INTO....."); // etc. etc.
$id = mysql_insert_id();
mysql_query("UPDATE table SET image = '$image_name' WHERE id = '$id'");
您可以使用臨時唯一名稱(例如20個字母的隨機字符串)保存圖像,並在插入完成後對其進行重命名。
正如其他人所說,在INSERT之前,您無法可靠地獲取ID。
如果要求圖像文件名匹配行ID,我會堅持mu的建議(在事務中插入INSERT,保存文件,更新行,COMMIT事務)。
另一種方法(如果您沒有id匹配文件名的要求)將命名文件使用uniqid()。這將允許您保存文件並用單個查詢插入行,而無需保持事務處於打開狀態。
- 1. 從MySQL INSERT獲取ID
- 2. 如何獲取MYSQL中當前行之前的行的總和?
- 3. node.js mysql insert id - 如何在插入查詢之外公開insert id?
- 4. 如何使用INSERT INTO獲取當前ID號?
- 5. MySQL在查詢中獲取當前行之前和之後的行
- 6. 如何在持續之前獲取實體的ID?
- 7. SQL Server INSERT觸發器如何獲取當前行的數據
- 8. 如何告訴MySQL在Update/Insert之前觸發一個Hash?
- 9. 如何在bash的grep結果之前/之後獲取行?
- 10. MySQL 5.5:獲取當前的事務ID?
- 11. 獲取當前mysql插入的ID
- 12. 如何在創建新記錄之前獲取最大ID值?
- 13. 如何在mysql中獲取id
- 14. Mongoose:在插入新行之前從表中獲取最大ID
- 15. 獲取前行標識,而在ID
- 16. 在VB6中,如何獲取之前在mshflexgrid中選擇的行?
- 17. 如何在mysql中獲取最後插入的2行perticular id?
- 18. 如何獲取當前頁面的ID
- 19. 如何獲取當前項目的ID?
- 20. 如何獲取當前博客的ID
- 21. 如何獲取當前記錄的ID?
- 22. 如何獲取當前片段的ID?
- 23. 獲取多個INSERT的唯一ID
- 24. 如何在INSERT中獲取下一個ID?
- 25. mysql在一行上獲取多個id
- 26. DapperExtensions MySQL的INSERT設置ID
- 27. 如何在發送之前或之後從PHP獲取郵件消息ID
- 28. 如何在jQuery的當前行上方(或之前)獲取表格行?
- 29. 在條件之前獲取MySQL行+一個
- 30. 如何在執行之前獲取新進程的PID?
保存後,您無法知道下一個ID會以100%的確定性得到。 –
是否有任何特定的原因,你想包括在圖像的文件名的ID?我只是爲所有傳入文件創建一個隨機文件名,然後將該文件名保存在數據庫記錄中。 –