Você está na página 1de 14

PHP

1.1 O PHP

O PHP é uma linguagem de programação orientada a objetos de código aberto e interpretada


que, apesar de muito poderosa, é de fácil aprendizagem. Seu principal uso é na programação de páginas
HTML dinâmicas para Internet, onde é conhecida como uma linguagem de programação de script server-
side (do lado do servidor), ficando embutida dentro do código da página HTML.
Suas principais características são: velocidade, robustez, simplicidade, eficiência, portabilidade
(independência de plataforma) e sintaxe similar a C e PERL.
O PHP é conhecido como a linguagem de programação para Internet mais utilizada. É
praticamente a linguagem de programação mais utilizada na Internet (do lado do servidor).

A linguagem PHP suporta:


• Bancos de dados – Adabas, dBase, Direct MS-SQL, Empress, FilePro, FrontBase,
Hyperwave, IBM DB2, Informix, Ingres, InterBase, mSQL, MySQL, Oracle, Ovrimos, PostgreSQL,
Solid, SQLite, Sybase, Unix dbm e Velocis, além de suporte a ODBC (Open Database Connection).
• Protocolos como – LDAP, IMAP, SNMP, NNTP, POP3, HTTP e COM, além do suporte a
sockets.
• Processa XML suportando os padrões SAX, DOM e extensão XSL.
• Sistemas operacionais – Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell
Netware, RISC OS, IRIX e Solaris.

1.2 Histórico

A linguagem PHP (Personal Home Page) foi criada por Rasmus Lerdorf, em 1994, para que ele
pudesse ter informações sobre as visitas feitas ao seu currículo em sua página pessoal. Em 1995, foi
liberada a primeira versão ao público, conhecida como PHP Tools, basicamente um conjunto de utilitários
simples: livro de visitas, contador de visitas e alguns outros.
Em 1997, o interpretador foi reescrito e rebatizado como PHP/FI (PHP Form Interpreter). Essa
versão incorpora a interpretação a dados de formulários HTML e suporte a mSQL. Seu uso cresceu e
muitos passaram a contribuir com o projeto; estima-se que esse uso tenha subido de 15 mil para mais de
50 mil sites nesse ano.
Com a explosão do uso, o projeto deixou de ser executado por Rasmus com contribuições de
outras pessoas para ter uma equipe de desenvolvimento. O interpretador foi novamente reescrito por
Zeev Suraski e utilizado como base para a versão 3 do PHP, que introduzia recursos ainda tímidos de
orientação a objetos. Pouco depois, Zeev e Andi Gutmans escreveram o PHP 4 a partir do zero. Esta
versão ampliava a orientação a objetos.
O nome da linguagem sempre se manteve PHP, mas, com o crescimento da linguagem, seu
significado passou do modesto Personal Home Page para Hypertext Preprocessor, nome
democraticamente escolhido por votação na comunidade que o mantém.
Em junho de 2004, foi lançada oficialmente a versão 5 do PHP, trazendo tantas modificações em
relação à versão 4 que fez com que muitos programas deixassem de funcionar, o que causou atraso em
sua adoção. Somente em julho de 2007 foi anunciada, oficialmente, no site do PHP, a descontinuidade da
versão 4 e a recomendação de que, até o final do ano, as aplicações fossem adaptadas para a versão 5.
Mesmo assim ainda há muitos programas rodando na versão 4.
Apesar de a versão 4 já ser muito poderosa, infelizmente, criou o mito de que qualquer pessoa
poderia programar em PHP. Mas isso não é verdade! Talvez seja fácil para um leigo escrever um
programa, mas, com certeza, não será fácil programar. Contudo, essa imagem vem mudando e, cada vez
mais, o PHP é visto como uma linguagem de programação para ser explorada em grandes projetos.
Na versão 5, o PHP finalmente chegou à idade adulta. Seu mecanismo interno foi novamente
reescrito, por completo, para operar com o Zend Engine 2.0, o que proporcionou significativo aumento na
velocidade de execução e performance na programação orientada a objeto. O Zend Engine é a junção dos
nomes do Zeev Suraski e Andi Gutmans.
A promessa de que a versão 6 retirará muitas características do PHP, para torná-lo mais prático,
já está gerando muitas discussões em listas de desenvolvedores sobre o problema do legado (programas
escritos na versão 5 que podem deixar de funcionar).

1.3 Instalação

1.3.1 Wamp5

Temos vários e ótimos servidores web que dão suporte para PHP. De fato, o Wamp não é um
servidor web, mas um pacote de instalação que contém o servidor web Apache com: o módulo de
interpretação do PHP; o banco de dados MySQL; o PHPMyAdmin, que é um módulo de administração do
MySQL e o SQLite, uma ferramenta de administração de bancos de dados SQL.
O Wamp5 é muito simples de ser instalado e é compatível com Windows.
( http://baixaki.ig.com.br/download/wamp5.htm)

1.3.2 PHP Editor

Para editar o código dos programas PHP, recomendamos um um editor que reconheça a sintaxe
da linguagem e coloque os comandos em cores diferentes; isso pode parecer besteira, mas facilita muito
a programação. Um ótimo editor é o PHP Editor que, além de reconhecer a sintaxe PHP, também
reconhece a sintaxe HTML, permite a edição de vários arquivos simultaneamente e recurso de auto-
complemento de funções.
O PHP Editor é um editor leve, que possui recursos avançados e ainda tem como diferenciais o
fato de ter sido desenvolvido em terras tupiniquins.
(http://superdownloads.uol.com.br/download/65/php-editor/;
Sua instalação é extremamente simples, basicamente um avançar, avançar e concluir.
2 A linguagem PHP

2.1 Primeiro Programa

<html>
<head> <title> Exemplo! </title> </head>
<body>
<?php
echo "Primeiro Exemplo !<p>";
?>
</body>
</html>

1. Digite a página acima usando o PHP Editor.

2. Salve o arquivo no diretório (pasta) “www”, criado pelo Wamp com o nome
“exemplo.php”. Provavelmente, o caminho da pasta “www” é “C:\Wamp\www”.

3. Abra um navegador Internet e digite o endereço “http://localhost/”. Se tudo der certo,


será apresentada uma página com as informações do servidor.

2.3 Sintaxe Básica

2.3.1 Delimitador PHP

Além do delimitador <?php ... ?>, como utilizamos em nosso primeiro programa, também
podemos utilizar em PHP o delimitador escrito, das seguintes formas:

• <script language=”php”> ... <script>


• <? ... ?>
• <% ... %>

Contudo, vale destacar que o indicado é você utilizar a forma como fizemos no primeiro
programa. As demais formas podem necessitar da configuração do interpretador PHP para serem aceitas.

2.3.2 Separador de Comandos

PHP utiliza o ponto-e-vírgula como separador de comandos, não como terminador; isso significa
que o último comando não necessita de ponto-e-vírgula. Mas não se preocupe com isso, é normal
colocarmos ponto-e-vírgula em todos os comandos.

2.3.3 Comentários

PHP permite comentários de linha e de bloco. Para fazer comentários de linha, você pode utilizar
o tradicional barra-barra, “//” ou o cerquilha “#”. Para comentários de bloco, foi mantido apenas o
tradicional barra-asterisco “/* ... */”.

2.3.4 Atribuição

Em PHP, como na imensa maioria das linguagens de programação, o igual “=” é utilizado para
atribuição de valores.

2.3.5 Operadores

Aritméticos
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Módulo – Resto da Divisão

Relacionais
== Igual
!= Diferente
> Maior
< Menor

<= Menor igual

Lógicos
&& and E
|| or Ou
xor Ou exclusivo
! Não

Além dos operadores acima, PHP ainda possui o operador de concatenação de string, o ponto
final “.” e a possibilidade de escrever operadores abreviados, como em C (+=, -+, *=, /=, %=, .=) e
os operadores de incremento (++) e de decremento (--). O exemplo abaixo mostra o uso desses
operadores.

Comandos Comando Resultado


Anteriores
$a=5; $b=2; $c=$a+$b; $c passará a valer 7
$a=5; $b=2; $c=$a/$b; $c passará a valer 2.5
$a=5; $b=2; $c=$a%$b; $c passará a valer 1
$a=5; $b=2; ($a==$b) Falso
$a=5; $b=2; ($a>=$b) Verdadeiro
$a=5; $b=2; $c=3; (($a>=$b) && Falso
($b==$c))
$a=5; $b=2; $c=3; (($a>=$b) or Verdadeiro
($b==$c))
$a=5; $b=2; (!($a==$b)) Verdadeiro
$a=”PH”; $b=”P”; $c=$a.$b; $c passará a valer “PHP”
$a=5; $b=2; $a+=$b; $a passará a valer 7
$a=5; $a++; $a passará a valer 6
$a=5; $a--; $a passará a valer 4
$a=5; $b=2; $c=3; $d=$a+$b*$c; $d passará a valer 11
$a=5; $b=2; $c=3; $d=($a+$b)*$c; $d passará a valer 21

Os parênteses “(...)” são utilizados como operador de precedência, como vimos nos dois últimos
exemplos acima. Em PHP, toda condição deve, obrigatoriamente, estar entre parênteses.

2.4 Variáveis

O PHP utiliza tipagem fraca de variável com checagem dinâmica; isso significa que as variáveis
não precisam ser declaradas e podem conter valores de diferentes tipos ao longo da execução do
programa. Apesar disso, podemos afirmar que PHP suporta os seguintes tipos de dados:
• inteiro (integer ou longint);
• ponto-flutuante (float ou double);
• caracteres (string);
• vetor (array);
• objeto (object).

O PHP possui uma particularidade, com relação ao delimitador de valores string, que pode ser
aspas simples ( ' ) ou dupla ( " ). Utilizando aspas simples, o PHP entenderá o valor exatamente como
está (exceto os caracteres especiais); utilizando aspas duplas, o PHP interpretará as variáveis contidas.

Principais caracteres especiais:

Forma de Escrita Será Impresso


\\ \
\$ $
\’ ’
\” ”

O PHP não possui um tipo booleano (verdadeiro ou falso), mas é capaz de avaliar expressões
lógicas. A maneira escolhida foi a mesma que a linguagem C, através de um valor inteiro: 0 (zero), para
falso, e qualquer valor diferente de zero (geralmente 1), para verdadeiro.
2.4.1 Vetores e Registros

O PHP utiliza um conceito um pouco diferente para trabalhar com vetores, o que permite que a
mesma estrutura seja utilizada também para registros. Se você está acostumado aos tradicionais vetores
com índices numéricos e seqüenciais, vai estranhar um pouco. De fato, em PHP, um vetor é um
repositório, onde os índices são chaves de acesso; estes índices podem ser de qualquer tipo. Mesmo
sendo inteiros, não precisam ser seqüenciais.

Exemplo:
<html>
<head><title>vetor</title></head>
<body>
<?php
$fruta[1] = "abacaxi";
$fruta[2] = "banana";
$fruta[3] = "caju";
$fruta["qtd"] = 3;
echo "Temos ".$fruta["qtd"]." frutas: ";
echo "$fruta[1], $fruta[2] e $fruta[3]";
?>
</body>
</html>

2.4.2 Conversão de Tipos

É possível converter valores de um tipo para outro utilizando, assim como na linguagem C, o
typecast do PHP. Para isso, basta escrever antes do valor o tipo desejado entre parênteses. Abaixo são
apresentados os typecasts permitidos.

Typecasts Converte para


(int), (integer) Inteiro
(real), (double), (float) Ponto-flutuante
(string) Caracteres
(array) Vetor
(object) Objeto

Exemplos:

$a = 1; // $a é inteiro e vale 1
$a = (double)$a; // $a passa a ser ponto-flutuante e valer 1.0
$b = 1.5; // $b é ponto-flutuante e vale 1.5
$b = (int) $b; // $b passa a ser inteiro e valer 1
Outra maneira de converter variáveis, é utilizando a função “settype()”, onde deve ser
informado como parâmetros o nome da variável, a ser convertida e um valor string com o tipo
(typecasts) desejado. Por exemplo:

$a = 1.5; // $a é ponto-flutuante
settype($a, “int”); // $a é transformada para inteiro e passa a valer 1.

2.4.3 Constantes

Para definir constantes em PHP, deve-se utilizar a função define(). O exemplo abaixo define e
utiliza a constante pi:

define("pi", 3.1415926536);
echo "O valor de pi é ".pi;

Obs.: uma constante nunca poderá conter vetores.

2.4.4 Variáveis de Ambiente

Variável de ambiente, também conhecida por constante de ambiente, é uma variável pré-definida
(não precisa ser declarada), que armazena um valor especial. PHP possui várias variáveis de ambiente. A
função “phpinfo()” apresenta a listagem de todas as variáveis de ambiente e seus valores.

Exemplos:

Nome Descrição
$_SERVER["HTTP_USER_AGENT"] Nome e versão do navegador do cliente.
$_SERVER["REMOTE_ADDR"] Endereço IP do cliente.
Caminho e nome do programa sendo
$_SERVER["SCRIPT_FILENAME"]
executado.

3. Comandos da Linguagem PHP

3.1 Comandos de Seleção

3.1.1 Bloco de Comandos

PHP também utiliza o conceito de bloco de comandos utilizado em C, Pascal e Java. Nessa idéia,
um grupo de comandos pode ser visto como um único comando, em determinadas circunstâncias. Em
PHP, os blocos são delimitados por chaves “{ ... }”.
3.1.2 IF

Em PHP, o “if” funciona com o conceito de blocos de comando. Isso significa que, se a condição
for válida, será executado o próximo comando. Se você necessitar que o “if” execute mais de um
comando, basta colocá-los dentro de um bloco.

Exemplo:

$a=1;
if ($a == 1)
echo "Um";
else {
echo "outro valor que não um";
echo "<br>";
}

O PHP também incorpora, o conceito de marcador de término, como ocorre na linguagem de


programação ASP. O exemplo abaixo faz exatamente o mesmo que o anterior, utilizando o marcador de
término “endif” para informar ao PHP o término de um comando “if”.

$a = 1;
if ($a == 1):
echo "um";
else:
echo "outro valor que não um";
echo "<br>";
endif;

Observe os dois pontos “ : ” colocados após o “if” e o “else”. Outra flexibilização que existe no
comando “if” é o “elseif”, para possibilitar ao comando “if” avaliar várias condições, funcionando de
forma similar ao comando “switch”.

Exemplo:
$a=1;
if ($a == 1)
echo "um";
elseif ($a == 2)
echo "dois";
else {
echo "outro valor que não um ou dois";
echo "<br>";
}
O “else” e o “elseif” são opcionais dentro do “if”, podendo não ser utilizados. O “elseif” pode ser
utilizado mais de uma vez dentro do “if”.

3.1.3 SWITCH

O comando “switch” e “elseif” podem ser utilizados para resolver o mesmo problema, mas,
nesses casos, o “switch” é mais recomendado, por questões de performance e higiene de programação
(código limpo e de fácil leitura). Basicamente, o “switch” avalia vários valores de uma mesma variável;
já o “elseif” pode avaliar qualquer condição.

Exemplo:
$a=1;
switch ($a) {
case 1:
echo "um";
break;
case 2:
echo "dois";
break;
default:
echo "outro valor que não um ou dois";
echo "<br>";
}
Assim como o “else” do comando “if”, o “default” do “switch” é opcional; caso exista, será
executado nas situações onde nenhum “case” seja avaliado como igual. Outro ponto é o comando
“break”, que interrompe a seqüência de execução do “switch”. Isso normalmente é necessário, porque o
comando “switch” foi desenhado para, ao avaliar um “case” como igual, executar todos os comandos
abaixo, até o final do “switch”, mesmo que estes estejam em outro “case”.
Uma particularidade do comando “switch” do PHP é a possibilidade de avaliar valores do tipo
caracter.

3.2 Comandos de Repetição

3.2.1 WHILE
O comando de repetição “while” é o mais simples dos comandos de repetição. Ele avalia a
condição e executa o(s) comando(s) até que a condição retorne falso. Assim como o “if”, também
permite a utilização de blocos de comandos e marcador de término.

$a = 1; $a = 1;
while ($a <= 10) { while ($a <= 10):
echo "$a<br>"; echo "$a<br>";
$a++; $a++;
} endwhile;
O while executa no mínimo zero e no máximo N vezes. Zero porque, ao chegar no “while”, a
condição pode ser avaliada como falsa e não chegará a executar a primeira vez, N porque pode entrar em
um “loop infinito”, repetindo eternamente, caso em que a condição nunca seria avaliada como falsa. Isso
ocorreria no exemplo acima se testássemos ($a > 0).

3.2.2 DO..WHILE

O comando de repetição “do..while” funciona de maneira semelhante ao “while”, a diferença é


que a condição é avaliada após a primeira execução, com isto ele executa no mínimo uma vez e no
máximo N vezes.

Exemplo:
$a = 1;
do {
echo "$a<br>";
$a ++;
} while ($a <= 10);

3.2.3 FOR

O comando de repetição “for” excuta repetição controlada, em que o programador define o


número de vezes que irá repetir, mesmo que esse número seja o valor de uma variável.
O comando for possuir três partes bem definidas:
• Inicialização – Executada apenas a primeira vez, antes da execução do(s) comando(s) e
serve para definir o valor da variável de controle.
• Condição – Executada todas as vezes, a primeira vez é antes da execução do(s)
comando(s) e serve para interromper a repetição; na realidade, o “for” tem funcionamento
bastante similar ao “while”, executando enquanto essa condição for avaliada como verdadeira.
• Incremento – Ou decremento, é executado a partir da segunda vez, antes da segunda
execução do(s) comando(s) e serve para alterar o valor da variável de controle. Normalmente
utiliza um incremento (++) ou decremento (--).
O “for” também pode ser escrito com marcador de término.

Sintaxe:

for (inicialiação; condição; incremento) {


comando(s);
}

Esse exemplo apresenta o for escrito, com marcador de término. A execução do exemplo
produzirá o mesmo resultado dos exemplos de “while” e “do..while”, como segue;
for ($a=1; ($a <= 10); $a++):
echo "$a<br>";
endfor;

3.2.4 Ruptura de Fluxo

O comando “break”, que funciona como um interruptor de fluxo de comandos. Isso porque ele
tem o poder de interromper a seqüência de execução de um bloco de comandos de repetição (“while”,
“do..while” e “for”, além do já visto “switch”), saltando para o próximo comando após o término do
bloco. No exemplo abaixo, seriam impressos os valores de 10 a 100, mas como o “break” interrompe a
repetição ao encontrar um múltiplo de 7, sendo impresso apenas de 10 a 13.

for ($a=10; ($a <= 100); $a++) {


if (($a % 7) == 0)
break;
echo "$a<br>";
}

O comando “continue” desvia o fluxo de execução para a condição do comando de repetição.

for ($a=10; ($a <= 100); $a++) {


if (($a % 7) == 0)
continue;
echo "$a<br>";
}

Ao encontrar um múltiplo de 7, o comando “continue” irá desviar o fluxo de execução para a


condição, fazendo com que o comando “echo” não seja executado; com isso, o resultado final desse
programa será a impressão dos números de 10 a 100, com exceção dos múltiplos de 7.

3.3 Subprogramas

Para o PHP, todo subprograma (procedimento ou função) é escrito como função. Uma vez que a
checagem de tipos em PHP é dinâmica, o tipo de retorno não necessita ser declarado; com isso, a única
diferença na escrita de um procedimento ou função é a presença do comando de retorno no corpo da
função. Devido a essa ausência de tipos, é recomendável que o programador documente suas funções
para facilitar a compreensão do código. O exemplo abaixo mostra a declaração de uma função e uma
forma eficiente de documentá-la.

function media ($n1, $n2)


{ // float function media(float, float)
$med = ($n1 + $n2) / 2;
return $med;
}
O comando return é utilizado para retornar o valor da função, mas é opcional; se o retirarmos,
essa função passa a ser um procedimento.
Apesar das particularidades acima, subprogramas em PHP se assemelham às outras linguagens
de programação. Em PHP, as funções também devem ser declaradas antes de serem chamadas,
recebendo parâmetros por valor ou referência. Apesar de não ser possível a uma função retornar mais
que um valor é possível retornar um vetor e, por conseqüência, mais que um valor.

Banco de Dados

5.1 Acessando Bancos de Dados


Um dos pontos fortes do PHP é a facilidade para o acesso a bancos de dados. Neste curso nos
concentraremos apenas no MySQL, que compõem, ao lado do PHP, a dupla preferida pela maioria dos
programadores PHP, principalmente no ambiente Linux com Apache.
No MySQL, assim como em quaisquer servidores de bancos de dados, há procedimentos e regras
para acessar os dados:
• Conectar ao servidor.
• Abrir banco de dados.
• Executar comandos SQL.
• Fechar o banco de dados.
• Desconectar do servidor.
Geralmente, os dois últimos não precisam ser executados, pois, quando o programa termina, o
banco é fechado e a conexão encerrada automaticamente.

5.2.1 Conectar ao Servidor

A conexão a um servidor de banco MySQL em PHP é feita através da função “mysql_connect()”,


que tem como parâmetros: o endereço do servidor (host), o nome do usuário (login) e a senha para a
conexão. A função retorna o identificador da conexão, que será utilizado em outras operações de banco.

Sintaxe:
mysql_connect(Host, usuario, senha)

Exemplo:
$conexao = mysql_connect("localhost", "root", "");

No exemplo, conectamos um servidor de banco que roda na mesma máquina do servidor de


página (localhost), utilizando um usuário pré-definido (root), sem senha (isso porque, no banco de
dados, não foi definida senha para esse usuário).
5.2.2 Abrir Banco de Dados

A abertura (ou seleção) do banco de dados é feita através da função “mysql_select_db()”, que
tem como parâmetros: o nome do banco de dados e o identificador da conexão (retornado pela função
“mysql_connect()”). A função retorna 0 (zero) em caso de falha ou 1 em caso de sucesso.

Sintaxe:

mysql_select_db(NomedoBanco, Conexão)

Exemplo:

$resultado = mysql_select_db("bdteste", $conexao);


if ($resultado == 0)
echo "ERRO DE CONEXAO AO BANCO DE DADOS.";
else {
...
}

5.2.3 Executar Comandos SQL

A execução de comandos, ou query, SQL (Structured Query Language) é feita através da função
“mysql_query()”, que tem como único parâmetro o comando SQL a ser executado. A função retorna 0
(zero), em caso de falha, ou 1, em caso de sucesso; ou seja, a consulta está sintaticamente correta e foi
executada pelo servidor.

Exemplo:

$sql = "INSERT INTO ALUNO(ALU_MATR, ALU_NOME, ALU_RG, ALU_CPF, ALU_IDADE)


VALUES ('$txtmatr', '$txtnome', '$txtrg', '$txtcpf', '$txtidade' )";
$resultado = mysql_query($sql);
if ($resultado == 0)
{
echo "Erro de execucao da instrucao SQL";
}
else
{
echo "Registro gravado com sucesso";
}
5.2.4 Executar Comandos SQL com Retorno

A execução de comando SQL, que retorna valores (SELECT), também é feita através da função
“mysql_query()”. Para capturarmos os valores retornados, devemos armazenar o retorno da função em
uma variável, que será tratada pela função “mysql_result()”, tendo como parâmetros: o identificador do
comando SQL (retorno da função “mysql_query()”), número do registro desejado e o identificador do
campo desejado. A função retorna o valor do campo especificado na linha especificada.

Um comando SELECT pode retornar vários registros (linhas ou tuplas), estando cada valor em um
registro. Isso significa que, para um resultado com vários registros, é preciso controlar o número do
registro para tratá-lo. Para sabermos quantos registros foram retornados, podemos utilizar a função
“mysql_num_rows()”, que tem como parâmetro o identificador do comando SQL (retorno da função
“mysql_query()”). A numeração dos registros inicia-se por 0 (zero); assim, se a função
“mysql_num_rows()” retornar 2, significa que foram retornados 2 registros, sendo o primeiro o
número 0 e o segundo o número 1. O número do último será sempre o valor retornado pela função
menos 1.

Exemplo:
$sql = "SELECT * FROM ALUNO ORDER BY ALU_NOME";
$resultado = mysql_query($sql);
if ($resultado != 0)
{
for ($i = 1; $i <= mysql_num_rows($resultado); $i++)
{
echo "Matrícula: " . mysql_result($resultado, $i -1, "alu_matr") . "<br>";
echo "Mome : " . mysql_result($resultado, $i -1, "alu_nome") . "<br>";
echo "Idade : " . mysql_result($resultado, $i -1, "alu_idade") . "<br>";
echo "RG : " . mysql_result($resultado, $i -1, "alu_rg") . "<br>";
echo "CPF : " . mysql_result($resultado, $i -1, "alu_cpf") . "<br>";
echo "<br><hr><br>";
}
}
else
{
echo "Erro de execucao da instrucao SQL";
}
}