我有这个 php $array :
usr_id | value 1 | value 2 | value 3
1 | a | b | c
2 | a | b | c
7 | d | e | f
8 | a | e | f
我想将其拆分为两个具有唯一组合值的关系表:
表 1 > 值
id | value1 | value2 | value3
1 | a | b | c
2 | d | e | f
3 | a | e | f
表 2 > 关系
id | usr_id | values_id
1 | 1 | 1
2 | 2 | 1
3 | 7 | 2
4 | 8 | 3
最简单的方法是什么?
提前非常感谢!
最佳答案
我的第一个想法是对 php 数组进行两次传递。一次创建值表,然后再次创建关系表。可能有一种方法只需一次即可完成此操作,但既然您说您只会执行此操作 1x,那么也许不需要进一步优化它。
(pcode)
create table values ( id int auto_increment, value1 int, value2 int value3 int,
primary key(id), unique key( value1, value2, value3 ));
foreach( $array as $val )
{
$q = $pdo->prepare( "insert ignore into values ( value1, value2, value3 ) values (?,?,?) " )
$q->bindParam( $val->value1 );
...
}
然后进行第二遍,从 values
中选择适当的值并将其插入到关系表中。
(pcode)
foreach( $array as $val )
{
$ret = $pdo->do( "select id from values where value1 = ?, value2 = ?, value3 = ?" );
( build the query )
$row = $ret->fetch();
$id = $row->id;
(now insert into relations )
$pdo->prepare( "insert into relations (usr_id, values_id ) values ( ?, ? )" );
$pdo->bindParam( 1, $id );
$pdo->bindParam( 2, $val->usr_id );
$pdo->execute();
}
关于php - 如何将具有一些相同值的php数组拆分并插入到两个具有唯一值的mysql关系表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324882/