Classe para trabalhar com SQL Server

Publicado por Vinicus S Moraes 05/07/2008

[ Hits: 8.775 ]

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 <vinicius@vsmora.com>      #
   #############################################
*/

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 (!@mssql_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 (!@mssql_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->RESULTADO=@mssql_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

Nova conexão ao banco de dados PDO

Cadastro de emails em massa.

Gravando conteudo de uma caixa de texto no banco de dados

Conectando php com Mysql

Gravando conteudo de uma caixa de texto no banco de dados [golfinho/Elefante]


  

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: vinicius@archlinux.com.br

[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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts