将数组插入数据库Yii

时间:2012-07-23 02:21:21

标签: php yii

我想将数组插入MYSQL数据库,最好使用Yii的活动记录。

例如,我有一个数组:

User = array(
    fname => "Joe"
    lname => "Schmidt"
)

我的数据库中有一个包含列id,fname和lname的User表。其中一个选项是创建一个对象并执行:

$user = new User;
$user->fname = User['fname'];
$user->lname = User['lname'];
$user->save();

然而,对于这样的常见功能而言,这似乎是如此多的代码。有没有办法将数组插入到数据库中,其中数组键与相应的列匹配,而我没有编写自己的函数或执行一些SQL查询hack?理想情况下,它使用已存在的Yii的活动记录。

4 个答案:

答案 0 :(得分:5)

您想要做的是由框架本身处理。

你可以像下面那样进行质量分配:

$user->attributes=$_POST['User'];

详细了解Mass Assignment

答案 1 :(得分:0)

我之前从未使用过Yii,所以我无法使用它提供解决方案,但您可以序列化数组并将其存储在数据库的单个单元格中,如下所示:

$user = array("fname" => "Joe", "lname" => "Schmidt");
$serialized = serialize($user);

//Store the $serialized variable in the database

当您准备好访问它时:

//Get your data from the database

$unserialized = unserialize($usersFromDB);
$fname = $unserialized['fname']; //Joe

希望有所帮助。

答案 2 :(得分:-1)

该功能非常简单,试试这个:

  function insert($table, $fields_values = array())
  {
    $q1 = join(",", array_keys($fields_values));

    $q2 = "'".join("','", array_values($fields_values))."'";

    $query = "INSERT INTO $table($q1) VALUES($q2)";

    // do your DB insert here
  }

主要技巧是使用join和array_keys / array_values查询转换的数组。

答案 3 :(得分:-1)

根据数组中的数据量,您可以编写自己的函数,例如

a)检查此backUpdate,修改它以插入/删除渲染视图选项

b)关注此thread

c)插入多条记录时可能traps

d)检查此关联的SOQ

如果您知道自己在做什么,那么您只需要照顾

  • 验证
  • 记录存在于关联表中(如果涉及FKey)
  • 选项d)。如果您有简单的插入(没有关联的表),那将是一个可能的答案