Banco de Dados - Funções Básicas

Para se ter acesso ao banco de dados, algumas funções, como aquelas que conectam ou desconectam do banco, já estão prontas.

Todas as funções explicadas aqui encontram-se no arquivo /cursos/aplic/bibliotecas/acesso_sql.inc

Conectar($cod_curso)

Essa função conecta-se ao banco de dados passado no argumento.
No caso, quando conectamos em $cod_curso, você tem acesso a todas as tabelas do curso passado no parâmetro.

Outra maneira de se chamar essa função é

$sock = Conectar("");

Dessa forma, você estará conectado ao banco principal, ou seja, no banco onde estão as tabelas usadas pelo Teleduc e não por um curso em específico.

O valor de retorno dela será um sock do servidor da base de dados.

Exemplo:

$sock = Conectar($cod_curso);

Desconectar($sock)

Após você conectar no banco de dados e utilizar o sock, você deve se desconectar do banco.

Para isso, basta fazer:

Desconectar($sock);

O $sock passado como parâmetro é o mesmo sock retornado da função Conectar().
Essa função não possui valor de retorno.

Enviar($sock, $query)

Esta função é utilizada para enviar uma consulta ao banco de dados.
O $sock é o sock da base que será consultada (valor de retorno da função Conectar()). O $query é a consulta que se deseja fazer.
A saída sera um apontador para o resultado da consulta.

MudarDB($sock, $cod_curso)

Algumas vezes, estamos conectados em um banco de dados, mas precisamos trocar de banco, então ultilizamos essa função. Ela simplesmente direciona o socket para o banco de dados passado no argumento $cod_curso. Então, as entradas são o sock ($sock) do banco de dados anterior, e o nome do novo banco de dados ($cod_curso) que se deseja conectar.
A saída dela será o socket do novo servidor do banco de dados.

MudarDB($sock, $cod_curso);

Funções de verificação

Existem algumas funções que são utilizadas para fazer uma verificação se o valor está correto e poder ser inserido no banco de dados.

VerificaNumeroQuery($num)

Esta função verifica se uma variável contem mesmo um valor numérico.
O seu parâmetro $num é o valor numérico a ser verificado, caso for realmente um número, esta função retorna o próprio $num, caso contrário, retorna nulo.

VerificaStringQuery($string)

Esta função neutraliza qualquer tipo de SQL Injection em uma dada string.
Ela tem como parâmetro a string que será usada no banco de dados, e retorna esta string tratada contra SQL Injection

Inserir dados em uma tabela

Depois de você criar uma tabela no banco de dados, você precisa inserir dados nela. E lógico que não há a possibilidade de inserir isso a mão.
Uma das maneiras é usar a linguage de banco de dados no php.
Por exemplo, suponha que você criou uma tabela "Historico" com os campos data, nome e resultado. Para inserir dados nessa tabela, temos a seguinte função:

function incluirHistorico($sock, $nome, $resultado)
{
  $data = date("d/m/Y H:i:s "); 

  $consulta="insert into Historico (data, nome, resultado) values ('".VerificaStringQuery(htmlentities($data))."', '".VerificaStringQuery(htmlentities($nome))."', '".VerificaStringQuery(htmlentities($resultado))."')";

  $res=Enviar($sock, $consulta);
}

Os argumentos são o socket que indica em qual banco de dados que está a tabela "Historico", o nome e o resultado que serão inseridos na tabela.
A variável $data é do tipo String, e a função "date()" é do próprio php.
A variável $consulta retorna o valor que será inserido no banco.
$res será um apontador do resultado da consulta

Repare que foi usada a função VerificaStringQuery() para validar as strings $data, $nome e $resultado.

Pegar dados de uma tabela

Uma das coisas necessárias é pegar dados de uma tabela do banco de dados. Assim como na inserção, tem-se uma consulta ao banco, que é retornada pela função Enviar().
Seguindo o exemplo anterior com a tabela Historico. Para pegar todos os dados dessa tabela, podemos fazer

function retornaDadosHistorico($sock)
{
  $consulta="select * from Historico order by data desc";

  $res=Enviar($sock, $consulta);

  $lista=RetornaArrayLinhas($res);

  return($lista);
}

Em consulta, fazemos um "select *" pois queremos todos os dados da tabela. Assim como na inserção, também temos que enviar o tipo da consulta no sock do banco de dados. $res retorna um apontador para o resultado. A função RetornaArrayLinhas() será explicada mais abaixo.
Repare que após o nome da tabela no select aparece "order by data desc" o que quer dizer que você quer que seus dados venham ordenados por ondem decrescente de data.

RetornaArrayLinhas($id)

Quando se faz uma consulta de duas ou mais linhas de uma tabela, o retorno será um array. Esta função retorna um array com todas as linhas da consulta, sendo a entrada dela um apontador de resultado da consulta e a saída um array com as linhas da consulta.

RetornaLinha($id)

Esta função é muito parecida com a de cima, porém é utilizada para pegar apenas uma linha da tabela. A entrada dela é um apontador de resultado da consuta e o resultado é um array com todos os campos da linha.