存在服务器1和数据库1,其中存储和查询数据而没有设置MySQL连接编码。当然,在整合之前,一切都有效。
还有另一个使用UTF8编码连接的服务器和数据库(2),因此所有值都可以正确存储。
必须将db1的某些表复制到db2。
这是我遇到任务的地方。我尝试了SELECT INTO
多个连接,然后我得到了权限错误(我只是在需要时无法在单个查询中交换到其他用户)
我也尝试过这样的事情
SELECT * INTO OUTFILE '/back.txt'
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
FROM article"
返回Access拒绝,即使我检查了所有权限。
所以我决定用PHP手动获取数据,将其存储在数组中,然后插入具有连接编码集的所有内容。这应该工作。虽然这比我一直在尝试的任何其他事情都复杂得多。
这些是没有敏感信息的代码片段:
连接到server1,选择DB1
for($id=0;$id<=203;$id++){
$q=mysql_query("SELECT * FROM article WHERE id=$id");
$n=mysql_num_rows($q);
$adat[$id]=mysql_fetch_assoc($q);
}
关闭连接1,连接到server2,选择DB2
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
我想到了如果我只能将查询应用于某个连接怎么办?这会更容易。我不知道应该怎么做,所以我在下面写下了这个烂摊子:
foreach($adat as $k=>$v) {
if(is_array($v)) foreach($v as $k2=>$v2) { echo $k." ".$v2;
$puffer.=",'".$v2."'";
}
$puffer=substr($puffer,1);
echo $puffer;
if(is_array($v)) mysql_query("INSERT INTO tarticles VALUES($puffer)");
echo "<br/>";
}
Aaaaand。这是行不通的。
(我正在检查is_array,因为行ID并不总是互相跟随)
请帮忙!