我的第一個想法是在php數組上做兩遍。一次創建值表,然後再創建關係表。可能有一種方法只用一遍就可以完成,但既然你說你只會這樣做1x,可能不是necc就可以進一步優化它。
(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();
}
它不清楚其中'2/relation'值從 – ethrbunny 2014-10-12 12:02:44
未來對不起......在表中「關係」的ID是一個新的自動增量ID,usr_id來自PHP數組,values_id是插入的自動遞增ID來自「值」表中插入的唯一「值」!謝謝 – user1719210 2014-10-12 12:07:15
對我來說,這是相同的,我只會在mysql中導入我的php數據時只做一次這個操作! – user1719210 2014-10-12 12:18:09