我有两个独立的远程数据库,两个数据库中的表都是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。
答案 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)");