如何使用php类函数将对象数据存储在mysql db中?

时间:2010-02-16 11:46:14

标签: php mysql database oop class

我在DB中创建了一个名为“member”的表,其中包含字段“name”,“college”,“email”,“zid”,现在我创建了一个类(在php中),如

class member
{ 
 private $name,$college,$email,$zid;
 private function adduser
 {
    //function definition
 }
 public function autherise($id)
 {
    //function definition
 }
}

现在在索引页面我将这些值作为来自用户的输入使用html表单(由JS验证)现在在表单的操作页面上我想创建对象as obj = new member();然后将类函数称为obj-> autherise($ _ post ['zid']); 我想要autherise和adduser函数的定义,如autherise检查zid的唯一性和调用adduser与剩余的post变量并将它们存储到对象然后在一个查询中将整个对象添加到DB。

我不想 insert into member(name,email,college,zid) values('$name,$email,$college,$zid') 我想直接输入obj到db

您可以修改功能中的任何内容

提前致谢!!!

3 个答案:

答案 0 :(得分:12)

在一个地方存储整个对象的“简单”解决方案,比如在数据库中,是将它序列化 - 即将其转换为字符串;然后,将该字符串存储在数据库的单个字段中。

这可以在PHP中使用serialize函数完成 - 并将字符串反序列化为对象,您将使用unserialize函数。


另一个解决方案是将对象序列化为JSON format - 这很好用,可以直接从Javascript和许多不同的编程语言中使用JSON,使用正确的库。

对于JSON,请参阅json_encodejson_decode


作为旁注:请注意,如果您将数据存储为序列化字符串,那么在SQL中操作它们将会更加更难:例如,您将无法使用简单的SQL查询更新它们;而且搜索也很难。

这意味着您将始终必须从数据库中获取数据,使用PHP操作它们,然后将它们发送回数据库 - 根据您的需要,这可能并不总是一个好主意。

答案 1 :(得分:3)

我不确定你要求的是什么。但也许......也许你正在寻找一个object relational mapper (orm),例如doctrine

答案 2 :(得分:0)

如果您希望将对象存储在数据库中,可以将对象serialize()json_encode()转换为String,然后将其存储在表中的字段中。

当您准备再次使用它时,您可以再次unserialize()json_decode()字符串。