Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Myrhay

Conexão PHP com SQL Server 2008 R2

Recommended Posts

Boa noite!

Estou com grande dificuldade em conseguir conectar com o SQLSERVER via php. Já fiz as instalações das dll que o site da microsoft sugere

 

extension=php_pdo_sqlsrv_56_nts.dll
extension=php_pdo_sqlsrv_56_ts.dll
extension=php_sqlsrv_56_nts.dll
extension=php_sqlsrv_56_ts.dll

extension=php5ts.dll

 

 

<?php  

$serverName = "(SONY-PC\SQLEXPRESS)";  
$connectionInfo = array( "Database"=>"Meubanco");  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  

if( $conn )  
{  
     echo "Conexão estabelecida.\n";  
}  
else  
{  
     echo "Conexão não estabelecida.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  

/* Close the connection. */  
sqlsrv_close( $conn);  
?>

 

Tento fazer a conexão e dá o seguinte erro:  Fatal error: Call to undefined function sqlsrv_connect() 

 

Já tentei várias configurações não consigo definir a função sqlsrv_connect()

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você estiver rodando o PHP thread-safe, use o arquivo php_sqlsrv_56_ts.dll
e para o php non-thread-safe use php_sqlsrv_56_nts.dll


Confirme no php.ini se você esta colocando as dlls na pasta que esta especificada em "extension_dir", o padrão é a pasta ext
O seu php é o 5.6 mesmo, né?
Não se esqueça de reiniciar o apache!
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
33 minutos atrás, EdCesar disse:

Atualização

Se você estiver rodando o PHP thread-safe, use o arquivo php_sqlsrv_56_ts.dll
e para o php non-thread-safe use php_sqlsrv_56_nts.dll

Alem das dlls, você também precisa dos drivers microsoft SQL Server para php
https://www.microsoft.com/en-us/download/details.aspx?id=36434


Confirme no php.ini se você esta colocando as dlls na pasta que esta especificada em "extension_dir", o padrão é a pasta ext
O seu php é o 5.6 mesmo, né?
Não se esqueça de reiniciar o apache!

Eu já passei por isso, aqui tem tudo o que você precisa:
https://docs.microsoft.com/en-us/sql/connect/php/step-1-configure-development-environment-for-php-development
https://docs.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver
http://php.net/manual/pt_BR/ref.pdo-sqlsrv.php

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 horas atrás, EdCesar disse:

 

EdCesar obrigado pela ajuda. Fiz tudo como você sugeriu e mesmo assim não consegui, acessar continua dando o mesmo erro. É possível que alguma configuração do meu computador esteja interferindo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Myrhay,  boa tarde

É o seguinte, tem que estar tudo alinhado!
 

Primeiro confirme algumas coisas:


Crie um arquivo info.php e chame a função phpinfo();
Entre nele pelo navegador e verifique em "Architecture" se o seu php é 32 ou 64bits
Confirme também em "Thread Safety" se esta disabled ou enabled. Se estiver disabled o seu php e nts (non-thread-safe) e se estiver enabled é thread-safe (ts)
 

(O fato do seu sistema ser 64bits não quer dizer que o seu php é 64bits)


No caso do php 5.6, baixe aqui o correspondente a arquitetura do seu php, (do php, não do sistema) e extraia para a pasta ext do seu php
https://www.microsoft.com/en-us/download/details.aspx?id=36434
 

Agora, seu php é thread-safe ou non-thread-safe?
 

Se for thread-safe, no php.ini coloque: 
extension=php_sqlsrv_56_ts.dll
extension=php_pdo_sqlsrv_56_ts.dll
 

Se for non-thread-safe no php.ini coloque:
extension=php_sqlsrv_56_nts.dll
extension=php_pdo_sqlsrv_56_nts.dll
 

Você precisa estar com o driver ODBC correspondente ao seu sistema operacional e arquitetura (64/32bits)
(na duvida, desinstale caso você já tenha instalado, reinicie o sistema e instale novamente)
https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server


Isso é tudo, de um retorno do resultado.
Boa sorte!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia EdCarlos!

 

Valeu por sua ajuda, consegui conectar graças as suas dicas, só para acrescentar uma informação, no meu caso funcionou direitinho com o PHP 7 e claro é um procedimento meio chato, porque ao fazer os testes aparecem erros variados.

 

Além disso tem que dá acesso no firewall as portas tcp 1433 e 1434, não sei explicar o porque, mas só funcionou depois que dei acesso no firewall a essas portas.

 

Muito obrigado o/

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 horas atrás, EdCesar disse:

São as portas padrão do Microsoft SQL Server, aparentemente você tinha mais de um problema. As vezes nos focamos muito em uma coisa, e existem outras...
É EdCesar, mas beleza rs
Boa diversão!

 

Bom dia EdCesar!

 

Agora surgiu outra dúvida rs, você poderia me auxiliar em outra situação.

 

Criei um banco de dados e quatro tabelas no sql server, agora gostaria de fazer um select no combobox, sendo que um combo depende do outro para ser carregado.

 

Segue os arquivos.

 

Se puder me dar essa força.

 

As tabelas são estados, cidades, bairros, atividade

index.php

localizacoes.php

combo.js

jquery-1.3.2.min.js

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, Myrhay

Primeiro pesquise para saber se já não existe uma resposta para sua duvida aqui no forum ou em outro lugar,  e caso necessário, para fins de organização no forum, abra um novo topico. Isso também ajudara outras pessoas a visualizarem e interagir na questão
Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.