Serialization 为什么要序列化数据库的对象?

Serialization 为什么要序列化数据库的对象?,serialization,Serialization,我知道序列化意味着什么,但不知道如何应用它。何时序列化数据库的对象。语言不重要,但这里是 我为什么要这样做?我为什么不使用常规查询execute来进行更新或插入呢。我读了代码注释,但没有领会 编辑:会话中有哪些信息是我不需要在常规列中包含的数据?序列化通常用于通过数据流在应用程序(机器、进程,有时)之间发送对象,例如,通过HTTP协议的web服务通信,只有当对象或其某些部分不能作为其属性值完全存储在列中时,才需要数据库序列化上下文中的套接字通信等。如果您被迫存储一些新数据,但无法更新数据库的

我知道序列化意味着什么,但不知道如何应用它。何时序列化数据库的对象。语言不重要,但这里是


我为什么要这样做?我为什么不使用常规查询execute来进行更新或插入呢。我读了代码注释,但没有领会


编辑:会话中有哪些信息是我不需要在常规列中包含的数据?

序列化通常用于通过数据流在应用程序(机器、进程,有时)之间发送对象,例如,通过HTTP协议的web服务通信,只有当对象或其某些部分不能作为其属性值完全存储在列中时,才需要数据库序列化上下文中的套接字通信等。如果您被迫存储一些新数据,但无法更新数据库的现有模式,则可能会出现这种情况。然后,您可能会使用一些varchar列以XML格式存储更多的数据,例如。当然,这是不鼓励的,但有时当您使用遗留代码时,没有其他方法。

序列化通常用于通过数据流在应用程序(有时是机器、进程)之间发送对象,例如通过HTTP协议的web服务通信,只有当对象或其某些部分不能作为其属性值完全存储在列中时,才需要数据库序列化上下文中的套接字通信等。如果您被迫存储一些新数据,但无法更新数据库的现有模式,则可能会出现这种情况。然后,您可能会使用一些varchar列以XML格式存储更多的数据,例如。当然,这是不鼓励的,但是有时当您使用遗留代码时,没有其他方法。

数据库(和其他外部存储/传输系统)使用字节块。因此,有人需要将内存中的内容转换为字节块,这些字节块也可以转换回原来内存中的内容。对于某些事情来说,这是微不足道的,系统(PHP、db,…)知道如何做(例如字符串)。但是你可以在内存中有一个非常复杂的东西——比如数组字典。必须有人将其转换为连续的可恢复字节块(序列化),并提供一种方法将该块转换回原始内存数据(反序列化)

数据库(和其他外部存储/传输系统)处理字节块。因此,有人需要将内存中的内容转换为字节块,这些字节块也可以转换回原来内存中的内容。对于某些事情来说,这是微不足道的,系统(PHP、db,…)知道如何做(例如字符串)。但是你可以在内存中有一个非常复杂的东西——比如数组字典。必须有人将其转换为连续的可恢复字节块(序列化),并提供一种方法将该块转换回原始内存数据(反序列化)

我将发送哪些类型的对象,而这些对象不会发送到必须保存的数据库?或者我会为数据库发送其他序列化的内容?我不知道你在问什么。应用程序中的任何对象都可以被发送/持久化。这在很大程度上取决于上下文。如果你问一个更精确的问题,也许我会更有帮助。我会发送哪些不会被保存到数据库的对象?或者我会为数据库发送其他序列化的内容?我不知道你在问什么。应用程序中的任何对象都可以被发送/持久化。这在很大程度上取决于上下文。如果你问一个更准确的问题,也许我会更有帮助。
<?php
// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
      "UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata)) {
    $stmt = odbc_prepare($conn,
     "INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!odbc_execute($stmt, $sqldata)) {
        /* Something went wrong.. */
    }
}
?>