Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用php数组插入不同主机上的mysql数据库吗?_Php_Mysql - Fatal编程技术网

我可以使用php数组插入不同主机上的mysql数据库吗?

我可以使用php数组插入不同主机上的mysql数据库吗?,php,mysql,Php,Mysql,我需要从本地主机中选择数据,然后将其插入另一台主机上的另一个数据库。我完全不懂数组,以前尝试过其他方法,但都不管用。我认为关闭第一个连接并稍后打开第二个连接就足以解决我的问题。但事实并非如此。 我没有收到任何错误消息,只是一张空白页,什么也没有发生 代码如下: 在这个例子中,我只选择了一个用户,这个用户的用户名是“martin”, 但对于真正的交易,我将不得不与8000名用户合作 <?php $db1 = mysql_connect('localhost', '1st HOST USER'

我需要从本地主机中选择数据,然后将其插入另一台主机上的另一个数据库。我完全不懂数组,以前尝试过其他方法,但都不管用。我认为关闭第一个连接并稍后打开第二个连接就足以解决我的问题。但事实并非如此。 我没有收到任何错误消息,只是一张空白页,什么也没有发生

代码如下:

在这个例子中,我只选择了一个用户,这个用户的用户名是“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);

?>

如果您遍历数组
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