1

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

例如,我有一个数组:

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

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

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

但是,对于这种通用功能,这似乎是很多代码。有没有办法将数组插入到数据库中,其中数组键与相应的列匹配,而无需我编写自己的函数或进行一些 SQL 查询破解?理想情况下,它使用 Yii 已经存在的 Active 记录。

4

4 回答 4

5

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

您可以像这样批量分配:

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

阅读有关批量分配的更多信息

于 2012-07-23T05:45:41.787 回答
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

希望有帮助。

于 2012-07-23T02:31:43.313 回答
-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进行数组到查询转换。

于 2012-07-23T03:10:47.537 回答
-1

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

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

b) 关注这个话题

c)插入多条记录时可能出现的陷阱

d) 检查这个相关的 SOQ

如果你知道你在做什么很容易做,你只需要照顾好

  • 验证
  • 关联表中存在记录(如果涉及 FKey)
  • 选项 d)。如果您有简单的插入(没有关联的表),这将是一个可能的答案
于 2012-07-23T03:39:39.583 回答