在PDO

时间:2017-02-17 21:06:12

标签: php mysql pdo

如果我有一组服务器IP地址:

 $servers = array('1.2.3.4','4.5.6.7','7.8.9.10');

我如何遍历它们并连接到db,从每个服务器获取数据,然后关闭?

 foreach ($servers as $v){
    $bdb = new PDO('mysql:host='.$v.';dbname=someDB','user','pass');
    $sel = "SELECT data from table";
    $stmt = $bdb->query($sel);
    while($r = $stmt->fetch()){
          $result[$v]['data'] = $r['data'];
    }
 }

我想要的结果是:

    print_r($result);

 array
 (
     [1.2.3.4] => Array
                 (
                   [data] => 'someData'
                 )
     [2.3.4.5] => Array
                 (
                   [data] => 'someOtherData'
                 )
     [7.8.9.10] => Array
                 (
                   [data] => 'someOtherOtherData'
                 )
  )

目前上面的代码只生成来自servers数组中第一个值的结果。

我尝试设置$ bdb = NULL并取消设置($ bdb)没有运气

1 个答案:

答案 0 :(得分:1)

我认为你必须在每次迭代后关闭连接。否则,您必须构建一个具有连接的数组,并且每次都在同一个变量中不相同。

foreach ($servers as $v){
    $bdb = new PDO('mysql:host='.$v.';dbname=someDB','user','pass');
    $sel = "SELECT data from table";
    $stmt = $bdb->query($sel);
    while($r = $stmt->fetch()){
          $result[$v]['data'] = $r['data'];
    }
    $bdb = null;
}

如果以这种方式关闭连接,则应该可以将变量设置为null并删除连接。然后应该可以在下一次迭代中创建一个新的。