Php 如何使用多个服务器名称修复连接字符串无效
我在实现多个服务器名称时遇到问题,他们告诉我将服务器名称放入阵列中,因此我对其进行了训练,并使阵列看起来像这样<代码>$serverNames=[“xx.xx.xx.xxx\\sqlexpress”,“xx.xx.xx.xxx\\sqlexpress”]代码>然后我把它放在内爆上<代码>$List=内爆(“,”,$serverName)代码>但是,排列服务器名的操作不起作用。这给了我错误 数组([0]=>Array([0]=>08001[SQLSTATE]=>08001[1]=>87[代码]=>87[2]=>SQL Server的[Microsoft][ODBC驱动程序17]SQL Server网络接口:连接字符串无效[87]。[message]=>SQL Server的[Microsoft][ODBC驱动程序17]SQL Server网络接口:连接字符串无效[87]。[1]=>Array([0]=>HYT00[SQLSTATE]=>HYT00[1]=>0[2]=>0[Microsoft][ODBC驱动程序17用于SQL Server]登录超时已过期[message]=>[Microsoft][ODBC驱动程序17用于SQL Server]登录超时已过期[2]=>Array([0]=>08001[SQLSTATE]=>08001[1]=>87[code]=>87[2]=>Microsoft][ODBC驱动程序17用于SQL Server]建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。请检查实例名称是否正确,以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书。[消息]=>[Microsoft][ODBC驱动程序17 For SQL Server]建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。请检查实例名称是否正确,以及SQL Server是否配置为允许远程连接。有关详细信息,请参阅SQL Server联机丛书。) 要查看更多我已经创建的代码,我将向您展示我的示例Php 如何使用多个服务器名称修复连接字符串无效,php,mysql,sql-server,Php,Mysql,Sql Server,我在实现多个服务器名称时遇到问题,他们告诉我将服务器名称放入阵列中,因此我对其进行了训练,并使阵列看起来像这样$serverNames=[“xx.xx.xx.xxx\\sqlexpress”,“xx.xx.xx.xxx\\sqlexpress”]然后我把它放在内爆上$List=内爆(“,”,$serverName)但是,排列服务器名的操作不起作用。这给了我错误 数组([0]=>Array([0]=>08001[SQLSTATE]=>08001[1]=>87[代码]=>87[2]=>SQL Ser
<?php
$serverNames = ["xx.xx.xx.xxx\\sqlexpress", "xx.xx.xx.xxx\\sqlexpress"];//serverName\instanceName
foreach($serverNames as $ip) {
$ip_array = $ip;
$connectionInfo = array( "Database"=>"users", "UID"=>"sa", "PWD"=>"1234");
$conn = sqlsrv_connect( $ip_array, $connectionInfo);
if( $conn ) {
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
}
$tsql = "SELECT * FROM users";
$stmt = sqlsrv_query($conn,$tsql);
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo '<tr>';
echo '<td style="font-size:11px;">'.$row['Firstname'].'</td>';
echo '<td style="font-size:11px;">'.$row['LastName'].'</td>';
echo '<td style="font-size:11px;">'.$row['DateBirth'].'</td>';
echo '</tr>';
}
?>
连接到每个服务器,从该服务器中提取数据行,或者在该服务器不可用时打印错误消息行
<?php
$serverNames = ['xx.xx.xx.xxx\\sqlexpress', 'xx.xx.xx.xxx\\sqlexpress'];
$connectionInfo = array('Database'=>'users', 'UID'=>'sa', 'PWD'=>'1234');
foreach ($serverNames as $ip) {
$conn = sqlsrv_connect($ip, $connectionInfo);
if (empty($conn)) {
// data of one server is not extracting to the table
echo '<tr><td colspan="3">Connection to <strong>Server ';
echo $ip;
echo '</strong> could not be established.</td></tr>';
} else {
$tsql = 'SELECT * FROM users';
$stmt = sqlsrv_query($conn, $tsql);
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo '<tr>';
echo '<td style="font-size:11px;">'.$row['Firstname'].'</td>';
echo '<td style="font-size:11px;">'.$row['LastName'].'</td>';
echo '<td style="font-size:11px;">'.$row['DateBirth'].'</td>';
echo '</tr>';
}
}
}
changedie(print_r(sqlsrv_errors(),true))
toecho($ip错误:“.print\r(sqlsrv\u errors(),true)”)
并查看第二个是否连接。@webjujuju当然可以will@SoulAiker,我认为如果使用双引号,您不需要逃避反弹<代码>xx.xx.xx.xxx\sqlexpressᴇᴛᴀʟ我得到的唯一数据是数组的第二个值。第一个ip没有加入。@WEBjuju我得到的唯一数据是数组的第二个值。第一个ip没有加入。断开一个只获得1个ip地址的连接,我想要看到的两个ip地址的数据。如果其中一个无法连接,会发生什么情况?如果是这样,一个服务器的数据不会提取到表中。我更新了代码以从每个服务器提取用户行,我在表中创建一行时出错…您可以根据需要删除该行。