Classe para trabalhar com SQL Server

Publicado por Vinicus S Moraes 05/07/2008

[ Hits: 8.093 ]

Homepage: http://vsmoraes.wordpress.com

Download sqlClass.php




Criei esta classe de conexão com o banco SQL Server para facilitar o trabalho em alguns sites que estou fazendo e decidir compartilhar.

Usei a mesma idéia da classe que eu fiz para trabalhar com mySQL.

É bem simples e está 90% comentada.

Possui métodos para paginação e etc.

  



Esconder código-fonte

<!-- Vou implementar aqui algumas classes em CSS para ficar mais fácil de tratar a aparência das mensagens de erro. -->

<style type="text/css">
p { margin:3px; }
table {border-collapse:collapse;}
.tdTitle {
  border:1px solid #000000;
  background-color:#CCCCCC;
  color:#000000;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  height:30px;
  font-size: 12px;
  font-weight: bold;
}
.td1 {border:1px solid #000000; background-color:#FFFFDF; color:#000000; font-family: Verdana, Arial, Helvetica, sans-serif;  font-size: 10px;}
.td2 {border:1px solid #000000; background-color:#FFFFFF; color:#000000; font-family: Verdana, Arial, Helvetica, sans-serif;  font-size: 10px;}
</style>

<!-- Fim -->

<?
/* #############################################
   # Classe para trabalhar com banco de dados  #
   # SQL Server                                #
   #Testado em um Servidor com:                #
   #    Apache 1.3                             #
   #    PHP 5                                  #
   #    SQL Server 2000                        #
   #    Internet Explorer 6+                   #
   #    Mozila FireFox                         #
   #                                           #
   #Autor: Vinicius S. Moraes                  #
   #       vsmoraes <[email protected]>      #
   #############################################
*/

class sqlControl {
  // Altere as variáveis abaixo de acordo com seu servidor SQL para a conexão:
    var $HOST = "localhost"; // Host/IP do servidor SQL Server.
    var $USER = "sa"; // Usuário vinculado ao SQL.
    var $PASS = ""; // Senha do usuário.
    var $DB = "S7_Real"; // Especifique o nome do banco de dados.
    var $QUERY = "";
    var $RESULTADO = "";
    var $ERROS = ""; // Variável que irá armazenar mensagens de erros, se houver.
    var $CONECTADO = 0;

  function sqlControl() { // Método Contrutor - Chamado no momento que da declaração de um objeto dessa classe.
    $this->connect(); // Tentativa de conexão com o banco
  }

  function addErro($erro) { // Método para adicionar erros
    $this->ERROS = $this->ERROS . $erro;
  }
  
  function clearErros() { // Método que limpa os erros
    $this->ERROS = "";
  }
  
  function printErros() { // Método para impressão dos erros na tela
    if ($this->ERROS || $this->ERROS != "") {
      echo "<table width='98%' border='0' cellpadding='0' cellspacing='0' align='center'>";
      echo "<tr>";
      echo "<td class='td1' align='center' valign='middel'>";
      echo "<br>";
      echo $this->ERROS;
      echo "<br>";
      echo "</td>";
      echo "</tr>";
      echo "</table>";
    }
  }

  function connect() { // Método de conexão com o banco
    $this->clearErros();
  // Conexão com o SQL, se falhar é atribuido uma mensagem de erro à variável $  ERROS.
    $this->CONECTADO = 1;
    if ([email protected]_connect($this->HOST, $this->USER, $this->PASS)) {
      $this->addErro("Erro ao conectar ao banco de dados. Verifique o HOST, o   USUÁRIO e a SENHA.<br>");
      $this->CONECTADO = 0;
    }

  // Seleção do banco de dados, se falhar é atribuido uma mensagem de erro à variável $ERROS.
    if ([email protected]_select_db($this->DB)) {
      $this->addErro("Erro ao selecionar banco de dados. Verifique se o NOME DO   BANCO está correto.<br>");
      $this->CONECTADO = 0;
    }
    $this->printErros();
  }
  
  function verifyConnection() {
    if ($this->CONECTADO == 1) { return 1; } else { return 0; }
  }
  
  function query($query) { // Método que executa instruções no SQL Server
    $this->clearErros();
    // Antes de tudo, vamos verificar se a conexão feita no método construtor está ativa ou não
    if ($this->CONECTADO != 1) {
    // Se não estiver ativa, teremos que terminar aqui, pois sem conexão nao podemos fazer nada.
      $this->addErro("Não conectado com o SQL. Use o método ->connect() para conectar.<br>");
      $this->printErros();
    } else {
    // Se estive corretamente conectado, teremos que verificar se a instrução é válida, ou seja, não está em branco.
      if (!$query || $query == "") {
        $this->addErro("Instrução SQL vazia, tente novamente.<br>");
        $this->printErros();
      } else {
    // Se estiver tudo OK, realizaremos a instrução no SQL, e se houver algum erro de sintáxe o próprio SQL irá dizer - Retornando 0 como resultado.
        $this->QUERY = $query;
        if (!$this->[email protected]_query($this->QUERY)) {
          $this->addErro("Não foi possível realizar a(s) instrução(ões) no SQL, verifique a sintaxe e tente novamente.<br>");
          $this->printErros();
        }
      }
    }
  }
  
  function instrucao($query) { // Retorna o array com o resultado da query -- retorna somente o primeiro resultado por não estar em um loop
    $this->QUERY($query);
    return @mssql_fetch_array($this->RESULTADO);
  }
  
  function printTable($query) { // Imprime uma tabela completa com os resultados da query
    $this->query($query);
    echo "<table border='0' cellpadding='0' cellspacing='0' align='center'>";
    echo "<tr>";
    for ($i=0; $i < mssql_num_fields($this->RESULTADO); $i++) {
      echo "<td class='tdTitle' align='center' valign='middel'>  " . mssql_field_name($this->RESULTADO, $i) . "  </td>";
    }
    echo "</tr>";
    $count = 0;
    while ($linha = mssql_fetch_array($this->RESULTADO)) {
      echo "<tr>";
      for ($i=0; $i < mssql_num_fields($this->RESULTADO); $i++) {
        if ($count % 2) { echo "<td class='td1'>";  } else { echo "<td class='td2'>"; }
        echo $linha[$i];
        echo "</td>";
      }
      echo "</tr>";
      $count++;
    }
    echo "</table>";
    
  }
  
}
?>

Scripts recomendados

NOTÍCIAS ATUALIZADAS E PERSONALIZADAS!

Classe básica de acesso a PostgreSQL pronta para extensões

Sistema php com Sqlite

Automatizar a recuperação de dados de uma linha de resultado do Mysql

CannaNews


  

Comentários
[1] Comentário enviado por lordtempus em 18/12/2013 - 16:46h

Prezado estou precisando de uma coisa parecida com essa mas um pouco simples me ajude com o codigo estou tentando fazer esse codigo funcionar mas ainda sou iniciante e não estou achando o erro! por favor poderia me ajudar?

[code]

<?PHP
@session_start();
@header('Content-Type: text/html; charset=utf-8');


class conexao_sql
{

//var $tipo_banco = "mssql";


public function conexao_sql()
{

$dbhost = "000.000.000.000"; #Nome do host
$dbsql = "bancod"; #Nome do banco de dados
$user = "usuario"; #Nome do usuário
$password = "ssenha"; #Senha do usuário


//Declaração do array
$conn = mssql_connect($dbhost, $user, $password); #Aqui está conectando!
$_SESSION["conexao_sql"] = $conn;


//Testando para ver se conecto com o Banco de Dados SQL 2012
if( $conn == true ) {
echo '<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
alert ("Conexão efetuada com Sucesso")
</SCRIPT>';
#está passando tambem como positivo aqui!
}


if( $conn === false ) {
echo "Unable to connect.</br>";
die( print_r( sqlsrv_errors(), true));


}


}

}
$con_sql = new conexao_sql();

#Mas quando faz esse teste ele aprensenta o erro: Changed database context to 'bancod'.
mssql_select_db("bancod");
if($conn)
{
echo "conectou";
}
else
echo(mssql_get_last_message());

?>
[/code]

[2] Comentário enviado por vsmoraes em 18/12/2013 - 17:05h

lordtempus,

Esse código é bem antigo, tenta usar o PDO pra isso, é bem melhor.

http://php.net/PDO

Caso ainda precise de ajuda, me mande um email: [email protected]

[3] Comentário enviado por lordtempus em 18/12/2013 - 17:43h

Vinicius obrigado por responder, até quero fazer através de PDO ainda não aprendi a técnica ainda. Porem eu não estou conseguindo fazer funcionar usando classes. Desta forma eu consigo fazer a conexão na função mas nada abaixo da função funciona o teste ele apresenta a seguinte mensagem: Changed database context to 'bancod'. Por favor se conseguir me ajudar eu vou ficar muito grato!


eu estou usando o php 5.1.6 / SQL Server 2012 com os testes simples eu faço conexão e até resultado. como esse abaixo:

<?
// Dados do banco
$dbhost = "hostbanco"; #Nome do host
$db = "nomebanco"; #Nome do banco de dados
$user = "nomeusuario"; #Nome do usuário
$password = "senhabase"; #Senha do usuário

// Dados da tabela
$tabela = "nometabela"; #Nome da tabela
$campo1 = "campo1tabela"; #Nome do campo da tabela
$campo2 = "campo2tabela"; #Nome de outro campo da tabela

@mssql_connect($dbhost,$user,$password) or die("Não foi possível a conexão com o servidor!");
@mssql_select_db("$db") or die("Não foi possível selecionar o banco de dados!");

$instrucaoSQL = "SELECT $campo1, $campo2 FROM $tabela ORDER BY $campo1";
$consulta = mssql_query($instrucaoSQL);
$numRegistros = mssql_num_rows($consulta);

echo "Esta tabela contém $numRegistros registros!\n<hr>\n";

if ($numRegistros!=0) {
while ($cadaLinha = mssql_fetch_array($consulta)) {
echo "$cadaLinha[$campo1] - $cadaLinha[$campo2]\n<br>\n";
}
}
?>


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts