我需要从localhost中选择数据,然后插入另一台主机上的另一个数据库。我是阵列上的一个总菜鸟,以前尝试过其他方式而且它没有用。我虽然关闭第一个连接并稍后打开第二个连接就足以解决我的问题了。但它不是。 我没有收到任何错误消息,只是一个空白页面,没有发生任何事情。
这是代码:
对于此示例,我只选择了1个用户,即用户名为“martin'”的用户, 但对于真正的交易,我必须为8000名用户做这件事。
<?php
$db1 = mysql_connect('localhost', '1st HOST USER', '1st HOST PASS') or die ("No pudo conectar base datos 1");
mysql_select_db('1 host DB', $db1);
$result = mysql_query("SELECT * FROM users WHERE username = 'martin' ");
$count = mysql_num_rows($result);
$usuarios = array();
i = 0;
if ($count <= 0) {
echo msgbox("There are no users.");
} else {
while ($row = mysql_fetch_array($result)) {
array_push($usuarios, $row['username']);
i++;
}
}
mysql_close($db1);
$db2 = mysql_connect('2nd host IP', '2nd host USER', '2nd host PASS') or die ("No pudo conectar base datos 2");
mysql_select_db('2nd host DB', $db2);
$completados = 0;
while($i > 0){
$usuario = $usuarios[i];
$insert = mysql_query("INSERT INTO prueba('usuario')VALUES('$usuario') ", $db2);
i--;
if($insert){
$completados++;
}
}
echo 'Agregados: ' . $completados;
mysql_close($db2);
?>
答案 0 :(得分:0)
如果遍历数组usuario
并为数组中的每个用户名执行该SQL语句,那将会有效。此外,(即使您可能是初学者),当前执行SQL语句的方式也很危险。看看prepared statements,因为它们也可以使数组迭代和插入更快。
答案 1 :(得分:0)
修改强>
$usuarios = array();
i = 0;
和
while($i > 0){
$usuario = $usuarios[i];
应该是
$usuarios = array();
$i = 0;
while($i > 0){
$usuario = $usuarios[$i];
你错过了$ i上的美元符号
如果这有助于解决您的问题,请做考虑看看其他人指出的问题,mysql_ *功能和弃用一样好,转移到PDO会更好: - )。
旧帖子
快速浏览一下,我看不出任何错误,请问您是否可以验证第二个数据库主机是否允许您从调用此代码的机器连接?