我有一个包含表Y和Z的数据库X.在Y中,我有一个名为W的列。它包含一个逗号分隔的数据。我想要做的是,通过Y,在W中拆分数据并将其插入Z(如果它不存在)。
我正在使用MySQL数据库。帮助
编辑。更具体地说,我给你更多信息。 W可以包含由逗号分隔的项,从零到几百。我希望代码检查它们是否存在于Z中。如果它们不存在,它会将它们插入Z中,每个都在自己的记录中用逗号分隔。因此,W中的数据“a,b,c”在Z中看起来像“a”,“b”,“c”,都在他们自己的记录中。
答案 0 :(得分:2)
这应该在您放置正确的主机,用户,通行证,数据库,表格后执行此操作...
<?php
$conn = new mysqli('some_host', 'some_user', 'some_pass', 'some_db');
if ($conn->connect_error) die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
$zrows = array();
$result = $conn->query("SELECT W FROM Y");
if($result) while ($row = $result->fetch_object()){
if(!empty($row->W)) foreach(explode(',',$row->W) as $v) $zrows[] = "('".$conn->real_escape_string($v)."')";
}
if(!empty($zrows)) {
$conn->query("INSERT IGNORE INTO Z (`value`) VALUES ".implode(',',$zrows));
}
如果有太多的行你可能会达到PHP的内存限制或mysql的max_packet_size,在这种情况下你可以一次插入几千个记录
另请注意,您需要UNIQUE KEY
value
Z
上的{{1}}