是否可以在數據庫中插入Object? (在PHP訪談中提問)是否可以在數據庫中插入對象?
回答
是的,有可能,使用serialize()
。
但是答案巨大取決於上下文。
是的,他問我關於序列化的下一個問題,我不知道多少... – 2010-05-13 12:58:57
感謝Pekka糾正我。 – 2010-05-13 13:03:10
如果您在談論PHP對象,則無法將對象插入到數據庫中。要將其存儲到數據庫中,首先需要序列化並在使用時將其序列化。
感謝夥伴的詳細信息 – 2010-05-13 13:00:44
這個問題是非常模糊和未定義的。我的意思是,一方面,您可以序列化一個對象並將其插入到數據庫中。但是,「插入對象」取決於上下文。例如,他指的事實,你可以調用像一個SQL語句:
$a = new object();
// This makes no sense.
$sql = "Insert into table_name values($a);";
如果這是他的要求,那麼答案是不,你不能這樣做,除非你重寫了__toString()
方法它返回要插入數據庫的值。即使那樣,這個類也沒有很好的定義,因爲你在說__toString()將是一個數據庫值,但是如果沒有引用類對象本身,它就沒有明確的定義或暗示。
在任何情況下,如果Object代表數據庫表等等,那麼您希望根據職責分離每個項目。例如,您可以擁有定義數據庫表的對象A,然後擁有一個「管理員」對象B,用於插入,更新,刪除和從數據庫中選擇項目。例如:
// NOT REAL PHP CODE....
class Table_Name
{
// Define primary keys, foreign keys, and attributes of the table.
private $column1;
public function setColumn1($value);
public function getCOlumn1();
}
class Table_Name_Manager
{
public function insert(Table_Name $obj);
public function delete(Table_Name $obj);
public function select(Table_Name $obj);
}
上面對我最有意義,因爲它清楚地定義了您所期望的行爲。您可以簡單地使用管理器從數據庫獲取項目,然後修改對象,然後再次調用管理器並插入,更新或刪除。
佳能與飛 – 2010-05-13 18:21:23
簡短的回答:不,這是不可能的
龍答:使用您不能直接插入的對象,你必須保存之前對其進行序列化,例如內置serialize()
功能或一些自定義XML序列化。那麼你可以把它放在一些TEXT
或BLOB
列。
正確答案:要將對象放入數據庫,使用一些ORM(對象關係映射)工具。大多數MVC框架都內置了ORM,最常用的是Active Record模式。
是的,你可以,你只需要序列化成適當的格式。 這樣一個開放式問題的整個意義在於找到一種被問及的方式。
+1,我認爲這是一個相當不錯的面試問題實際上。 – 2010-05-13 14:57:03
這絕對正確@mhughes,因爲他們正在採訪不清除他們的懷疑 – 2010-05-14 05:11:13
+1的ORM。我通常會爲此使用Doctrine。 – selfawaresoup 2010-05-15 15:28:36
+1看起來很有趣 – dmp 2010-05-15 15:35:46
應當注意的是,存儲序列化對象到關係數據庫的矛盾幾乎所有的數據庫規範化規則,可以被認爲是非常不好的做法。
要將對象存儲在數據庫中,您應該使用對象關係映射器(如Doctrine或Propel)。
序列化對象可以存儲在文件系統中。沒關係。
- 1. FILTER_VALIDATE_EMAIL是否可以安全地插入數據庫中?
- 2. 可以嵌入數據庫對象嗎?
- 3. 是否可以使用$ _REQUEST在mysql數據庫中插入數據?
- 4. 是否可以動態插入對象參數的值?
- 5. 是否可以將sharedpreference中的數據插入到mysql數據庫中?
- 6. 是否可以從CentOS命令行執行數據庫插入?
- 7. 是否可以在表中插入任意數據?
- 8. 是否有可能在插入之前將id插入到數據庫中
- 9. 是否可以在數據庫NeDB中插入整個.json文件?
- 10. 在Web應用程序中是否可以嵌入數據庫?
- 11. mysql是否可以插入到插入?
- 12. pdo,將php對象插入數據庫
- 13. 如何將對象插入數據庫
- 14. 從java插入對象到數據庫
- 15. 彈出窗體可以在數據庫中插入數據
- 16. 是否可以插入String toType []數組?
- 17. 數據庫插入是否合併?
- 18. 是否可以在輸入類型=「數字」中插入符號
- 19. 是可以插入一個元組蟒在PostgreSQL數據庫
- 20. 是否可以使用plinq ForAll將批量插入到數據庫中?
- 21. 在Oracle中插入對象數據12C
- 22. 是否可以通過插入關鍵字插入空值所在的數據
- 23. 將對象中的數據插入數據庫
- 24. Spark在寫入時是否可以使用SQL數據庫?
- 25. 是否有SQL或MySQL等的「對象數據庫」插件?
- 26. 是否可以使用PHP中的Zope對象數據庫?標題爲
- 27. 是否可以插入/寫入數據而不用在Cassandra中定義列?
- 28. 是否可以在Codeigniter的表列中以不同語言插入數據?
- 29. 是否可以使用Sphinx在MongoDB中索引嵌入對象?
- 30. 是否可以在Flow中導入對象的推斷類型?
這是面試官問的完整問題嗎?我已經把這個問題解決爲「不是真正的問題 - 太模糊」:) – 2010-05-13 12:55:33
是的,他問我什麼:(我問他給細節,(記住我說我必須問這個在stackoverflow,並且 – 2010-05-13 12:57:57