如果我有一组服务器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)没有运气
答案 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并删除连接。然后应该可以在下一次迭代中创建一个新的。