通过阅读另一个插入数据库

时间:2012-07-23 16:38:21

标签: mysql split

我有一个包含表Y和Z的数据库X.在Y中,我有一个名为W的列。它包含一个逗号分隔的数据。我想要做的是,通过Y,在W中拆分数据并将其插入Z(如果它不存在)。

我正在使用MySQL数据库。帮助

编辑。更具体地说,我给你更多信息。 W可以包含由逗号分隔的项,从零到几百。我希望代码检查它们是否存在于Z中。如果它们不存在,它会将它们插入Z中,每个都在自己的记录中用逗号分隔。因此,W中的数据“a,b,c”在Z中看起来像“a”,“b”,“c”,都在他们自己的记录中。

1 个答案:

答案 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}}