PHP Mysql将记录复制到不同的数据库中

时间:2013-04-29 10:02:53

标签: php mysql

我有两个独立的远程数据库,两个数据库中的表都是identicle,我想使用PHP将旧数据库中的记录复制到新数据库

虽然这个the best way to copy new records from one database to another给出了解决方案

mysqli_query($db1,"SELECT field1,field2,field3 FROM table1");

mysqli_query($db2,"INSERT INTO table1 (field1,field2,field3)");

由于涉及的字段数量,我想尝试避免命名所有字段

我在考虑这样的事情......

$m = mysqli_query($db1,"SELECT * FROM table1");

****这就是我的STUCK ****

我如何从上述声明中获取此信息?

$values = "'".implode("','",array_values($m))."'"; 
$columns = implode(",",array_keys($m));

所以我可以这样做

mysqli_query($db2,"insert into table1 ($columns) values ($values)")

我知道我需要将PRIMARY KEY id更改为null。

2 个答案:

答案 0 :(得分:3)

要获取实际的列名,您可以这样做:

$sql="SELECT column_name FROM information_schema.columns WHERE table_schema = 'database_name' AND table_name = table1";

将上述内容导入数组。

$result = $mysqli->query($query);
$cols = $result->fetch_array(MYSQLI_NUM);

并在逗号分隔列表中创建$ columns-variable

$columns = implode(",", $cols);

对于值,只需执行常规的select语句:

$sql="SELECT * FROM table1";
$result = $mysqli->query($query);
$vals = $result->fetch_array(MYSQLI_NUM);

答案 1 :(得分:2)

最后修改我自己的代码并使用mysqli_fetch_assoc创建数组非常简单

$m = mysqli_fetch_assoc(mysqli_query($db1,"SELECT * FROM table1"));

然后使id为null

$m["id"] = 'replacethis';
$values = str_replace("'replacethis'","null","'".implode("','",array_values($m))."'"); 

$columns = implode(",",array_keys($m));

然后终于......

mysqli_query($db2,"insert into table1 ($columns) values ($values)");