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



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

我使用的是MySQL数据库。帮助

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

这应该在放置正确的主机、用户、pass、db、表之后进行。。。

<?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,在这种情况下,您可以一次插入1000条记录

还忘记了您需要在Z 中的value上有一个UNIQUE KEY

最新更新