我可以使用php数组插入不同主机上的mysql数据库吗?
我需要从本地主机中选择数据,然后将其插入另一台主机上的另一个数据库。我完全不懂数组,以前尝试过其他方法,但都不管用。我认为关闭第一个连接并稍后打开第二个连接就足以解决我的问题。但事实并非如此。 我没有收到任何错误消息,只是一张空白页,什么也没有发生 代码如下: 在这个例子中,我只选择了一个用户,这个用户的用户名是“martin”, 但对于真正的交易,我将不得不与8000名用户合作我可以使用php数组插入不同主机上的mysql数据库吗?,php,mysql,Php,Mysql,我需要从本地主机中选择数据,然后将其插入另一台主机上的另一个数据库。我完全不懂数组,以前尝试过其他方法,但都不管用。我认为关闭第一个连接并稍后打开第二个连接就足以解决我的问题。但事实并非如此。 我没有收到任何错误消息,只是一张空白页,什么也没有发生 代码如下: 在这个例子中,我只选择了一个用户,这个用户的用户名是“martin”, 但对于真正的交易,我将不得不与8000名用户合作 <?php $db1 = mysql_connect('localhost', '1st HOST USER'
<?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);
?>
如果您遍历数组
usuario
并对数组中的每个用户名执行该SQL语句,那么这将起作用。此外,(即使您可能是初学者),当前执行SQL语句的方式也是危险的。请看一看,因为它们还可以加快数组的迭代和插入速度。Edit
$usuarios = array();
i = 0;
及
应该是
$usuarios = array();
$i = 0;
while($i > 0){
$usuario = $usuarios[$i];
你错过了$i上的美元符号
如果这有助于解决你的问题,请参阅<强> do/Stutt>考虑查看其他人指出的问题,MySQL函数*和弃权一样好,移到PDO甚至会更好:-/P> 旧帖子
$usuarios = array();
i = 0;
通过快速浏览,我看不出这么快有什么问题,请您验证第二台数据库主机是否允许您从调用此代码的机器连接?而不是使用
mysql.*
方法。您需要通过在数组上循环并构建字符串来动态构建查询。使用mysqli_*或PDO,您可以准备一个查询,只需调用execute并传入数组。完全同意:-)是的,第二台主机允许从第一台主机进行连接。您是否检查了作为练习剩下的另一台缺少的$i?:-)对不起,你对数组usuario进行迭代是什么意思?(我不会说太多英语)你能给我举个例子吗?@user1913644当然。读取,这是一个for循环,可以用来遍历数组中的每个元素。使用其中一个单独插入每个用户。对于($i=0;$i