Php 将数组插入数据库Yii
我想在MYSQL数据库中插入一个数组,最好使用Yii的活动记录 例如,我有一个数组:Php 将数组插入数据库Yii,php,yii,Php,Yii,我想在MYSQL数据库中插入一个数组,最好使用Yii的活动记录 例如,我有一个数组: User = array( fname => "Joe" lname => "Schmidt" ) 在我的数据库中使用id、fname和lname列的用户表。其中一个选项是创建对象并执行以下操作: $user = new User; $user->fname = User['fname']; $user->lname = User['lname']; $user->
User = array(
fname => "Joe"
lname => "Schmidt"
)
在我的数据库中使用id、fname和lname列的用户表。其中一个选项是创建对象并执行以下操作:
$user = new User;
$user->fname = User['fname'];
$user->lname = User['lname'];
$user->save();
然而,这似乎是如此之多的代码用于这些通用功能。有没有一种方法可以在数据库中插入数组,使数组键与相应的列匹配,而无需编写自己的函数或进行SQL查询?理想情况下,它使用已经存在的Yii活动记录。我以前从未使用过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
希望有帮助。功能非常简单,请尝试以下操作:
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
}
主要技巧是使用连接键和数组键/数组值进行数组到查询的转换。根据数组中的数据量,您可以编写自己的函数,例如 a) 选中此选项,将其修改为“插入/删除渲染视图”选项 b) 照此 c) 在插入多个记录时可能出现 d) 检查此关联项 如果你知道你在做什么很容易,你只需要照顾好自己
- 验证
- 关联表中存在记录(如果涉及FKey)
- 备选方案d)。如果您有简单的插入(没有关联的表),这将是一个可能的答案
$user->attributes=$_POST['User'];
阅读有关的更多信息,您可以使用此批量分配:
$user=new user()$用户->属性=$data\u数组;如果(!$user->save()){print\r($user->errors,true);}
。将数组分配给属性
属性将执行您想要的操作,但仅适用于那些为当前场景定义了验证规则的属性。@DCoder,这是我一直在寻找的一个很棒且简洁的解决方案!如果你把它作为一个答案,我会接受它。改为接受:)