PHP: mssql_connect()

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: mssql_connect()

Mensagem por cjp »

Pessoal, estou tentando fazer em PHP uma função para conexão ao SQL Server que me permita usar dois endereços de host (principal e alternativo), para que, quando um não estiver funcionando, conecte com o outro.

Tentei assim:

Código: Selecionar todos

function conectsqlserver()
{
$dthj=date('Y-m-d');
$banco = "xxx";
$usuario = "xxx";
$senha = "xxx";
$host = "endereçoprincipal";

$nVez = 0;

while ($nVez<20)
 {
 $link = mssql_connect($host,$banco,$senha);
 $nVez++;
 if(!$link)
  {
  if($nVez/2==intval($nVez/2))
   {
   $host = "enderecoalternativo";}
  else
   {
   $host = "mssql.inaciocarvalho.com.br";}
  if($nVez>10)
   {
   echo "<br>";
   echo "Não conectou no banco SQL Server";
   echo 'MySQL Error: ' . mssql_error();
   return "F";
   }
  }
 }

$sel=mssql_select_db($banco,$link);

$nVez = 0;

while ($nVez<20)
 {
 $nVez++;
 if (!sel)
  {
  if($nVez>10)
   {
   echo "Não foi possível abrir o banco de dados";
   echo 'MySQL Error: ' . mssql_error();
   return "F";
   }
  }
 }	
}
return "T";

O problema está no retorno da mssql_connect().

No manual do PHP, consta:
Returns a MS SQL link identifier on success, or FALSE on error.
Entretanto, pelos testes que fiz, mesmo quando a conexão não é feita, $link não fica FALSE, tá como Resource #3.

Alguém pode me ajudar com isto?
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: mssql_connect()

Mensagem por cjp »

A versão do PHP do meu provedor não suporta PDO.
Inacio de Carvalho Neto
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

PHP: mssql_connect()

Mensagem por sygecom »

cleitonLC escreveu:
SteelHeart8 escreveu:Parece haver um problema com a função mssql_connect() no PHP porque, mesmo quando nenhuma conexão é estabelecida, ela não está retornando FALSE como esperado. Isso pode ser devido a vários motivos, incluindo configurações do SQL Server ou problemas com a forma como a função é usada. Como solução alternativa, você pode tentar usar o PDO (PHP Data Objects) para se conectar ao SQL Server, pois ele oferece mais recursos e lida melhor com os erros de conexão. Costumávamos fazer o mesmo quando eu trabalhava no escritório https://spribe2.com/. Abaixo está um exemplo simplificado de uso do PDO com dois endereços de host. Lembre-se de fazer as alterações necessárias para atender às suas necessidades e tenha em mente a segurança ao lidar com informações de conexão e senhas.
Boas, https://spribe2.com/ do game Aviator ?
Esse usuário é um robo, vou bloquear ele.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: mssql_connect()

Mensagem por cjp »

Imaginei que fosse mesmo.
Consegue me ajudar nesta questão?
Inacio de Carvalho Neto
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

PHP: mssql_connect()

Mensagem por sygecom »

cjp escreveu:Imaginei que fosse mesmo.
Consegue me ajudar nesta questão?
Não sou o cara pra lhe ajudar no MYSQL, vamos esperar por outro colega.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: mssql_connect()

Mensagem por cjp »

Na verdade a questão é de PHP, não propriamente de MySQL.
Aguardo ajuda dos colegas.
Inacio de Carvalho Neto
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

PHP: mssql_connect()

Mensagem por sygecom »

By ChatGPT

Código: Selecionar todos

function conectarSqlServer()
{
    $banco = "xxx";
    $usuario = "xxx";
    $senha = "xxx";
    $host = "endereçoprincipal";
    $hostBackup = "enderecoalternativo";

    $tentativas = 0;

    while ($tentativas < 2) {
        $link = mssql_connect($host, $usuario, $senha);
        
        if (!$link) {
            $host = $hostBackup; // Use o endereço de backup na próxima tentativa
            $tentativas++;
        } else {
            break; // Se a conexão for bem-sucedida, pare o loop
        }
    }

    if (!$link) {
        echo "Não foi possível conectar ao banco de dados";
        echo 'MySQL Error: ' . mssql_error();
        return "F";
    }

    $selecionarBanco = mssql_select_db($banco, $link);

    if (!$selecionarBanco) {
        echo "Não foi possível abrir o banco de dados";
        echo 'MySQL Error: ' . mssql_error();
        mssql_close($link); // Fecha a conexão
        return "F";
    }

    return "T";
}
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP: mssql_connect()

Mensagem por cjp »

Funcionou. Muito obrigado.
Curioso que pra mim o ChatGPT não deu esta solução, só com o PPO.
Inacio de Carvalho Neto
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

PHP: mssql_connect()

Mensagem por rochinha »

Amiguinhos,

Só deixando um adendo aqui sobre os motores PHP disponíveis.

cjp PDO seria uma versão de ADO, ou seja, PDO está para internet assim como ADO está para desktop. Nos dois, com apenas um recurso você acessa vários SGDBs apenas definindo Connections Strings. Lógico que deverá ativar os PDO_(SGBDs) que queira usar.

O driver PDO, assim como driver MySQLi pode estar ativos junto com o driver MySQL em uma mesma sessão PHP sem problemas e deve ser ativado via painel de controle do seu HOST em sessão específica de módulos adicionais. Cada Host usa um tipo de Painel.

No caso do cPanel você encontra no grupo Software, Selecionar Versão do PHP e Extensões. Marque os modulos que deseja ativar.

Verifique com o suporte do HOST a necessidade de reiniciar o servidor HTTPD ou APACHE e vá até o grupo avançado e escolha >_ Terminal e dentro digite restartsrv e dê ENTER

Lista de comandos de reiniciar serviços no cpanel

restartsrv – Reiniciar.
restartsrv_apache – Reiniciar apache.
restartsrv_bind – Reiniciar bind.
restartsrv_clamd – Reiniciar clamd.
restartsrv_courier – Reiniciar courier imap.
restartsrv_cppop – Reiniciar cppop.
restartsrv_entropychat – Reiniciar entropy chat.
restartsrv_exim – Reiniciar exim.
restartsrv_eximstats – Reiniciar exim statistics.
restartsrv_ftpserver – Reiniciar your ftp server.
restartsrv_httpd – Reiniciar httpd.
restartsrv_imap – Reiniciar impad.
restartsrv_inetd – Reiniciar inetd.
restartsrv_interchange – Reiniciar Interchange Shopping Cart.
restartsrv_melange – Reiniciar melange chat.
restartsrv_mysql – Reiniciar mysqld.
restartsrv_named – Reiniciar named.
restartsrv_postgres – Reiniciar postgresql.
restartsrv_postgresql – Reiniciar postgresql.
restartsrv_proftpd – Reiniciar proftpd.
restartsrv_pureftpd – Reiniciar pure-ftpd.
restartsrv_spamd – Reiniciar spamd.
restartsrv_sshd – Reiniciar sshd.
restartsrv_syslogd – Reiniciar syslogd.
restartsrv_tomcat – Reiniciar tomcat.
restartsrv_xinetd – Reiniciar xinetd.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder