PHP: Lição 3
Autor: 4luada | Publicado: 2014-03-31T21:52:00-03:00


Continuando com meu estudo de PHP, comecei a estudar MySQL para manipular database. Segui pelo guia de PHP do w3schools, que tem uma seção de Database que explica o básico de MySQL. O site tem um tutorial voltado completamente para SQL, mas deixarei para outro momento.

O PHP tem a capacidade de manipular databases, e MySQL é um sistema de database frequentemente usada em conjunto com PHP para se manipular databases na web. O MySQL roda no servidor, é rádpido e confiável, compilável em várias plataformas, e é gratuito.

O MySQL guarda dados em tabelas, de forma a ser muito útil na hora de classificar os dados. Ele usa queries para fazer pedidos de dados.
No meu caso, o WAMP já instalou o MySQL no servidor PHP.

Conexão com servidor MySQL

A primeira coisa a se fazer antes de qualquer acesso ao database é estabelecer uma conexão ao servidor MySQL através da função:
mysqli_connect([&lt;servidor&gt;],[&lt;username&gt;],[&lt;senha&gt;],[&lt;db_name&gt;]).
A conexão é interrompida automaticamente ao final do script, mas para fechar a conexão antes, há a função:
mysqli_close(&lt;conexão&gt;).


&lt;?php
$conection = mysqli_connect("example.com","peter","abc123","my_db");
if (mysqli_connect_errno()){
&nbsp;&nbsp;&nbsp;&nbsp;echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_close($conection);
?&gt;


OBS: SQL não é case-sensitive, ou seja, não diferencia letras maiúsculas de minúsculas.

Criando Database, Tabelas, Chaves Primárias e Registros

Antes de tudo, qualquer comando em SQL é feita em PHP através do comando:
mysqli_query(&lt;conection&gt;, &lt;sql_statement&gt;);

Novo database
O comando para se criar um novo database é:
CREATE DATABASE &lt;db_name&gt;

Nova tabela
Ao se criar uma nova tabela, já se define os nomes das colunas (campos) e os tipos de dados que cada uma irá conter. O comando para se criar uma nova tabela é:
CREATE TABLE &lt;table_name&gt;(&lt;col_name&gt; &lt;type&gt;, ...)
Dentro do parênteses se define as colunas da tabela. Confira os tipos dos dados aqui. Os principais tipos são:


 String de tamanho fixo (até 255): CHAR(&lt;max_length&gt;)
 String grande: TEXT
 Inteiro: INT[(&lt;max_digits&gt;)]
 Ponto flutuante: FLOAT[(&lt;max_digits&gt;, &lt;max_decimal_digits)]
 Data (formato YYYY-MM-DD): DATE()
 Hora (formato HH:MM:SS): TIME()
 Data e Hora (formato YYYY-MM-DD HH:MM:SS): DATETIME()


Chave Primária
Toda linha da tabela deve ter um campo &quot;Chave Primária&quot;, usada para identificar de modo único e exclusivo cada linha da tabela. Portanto cada valor de Chave Primária deve ser único, não pode repetir e nem ser null. Normalmente a "chave primária" é um número ID (de identificação), cujo valor é criado automaticamente, e incrementado automaticamente ao se criar um novo registro, tudo isso adicionando AUTO_INCREMENT depois de definir o tipo de dado da coluna. E para garantir que o valor do campo não é nulo com NOT NULL. Essas declarações podem ser usadas para qualquer campo, não só para o campo da Chave Primária. Para definir um campo como Chave Primária, utiliza-se a declaração PRIMARY KEY(&lt;coluna&gt;).


$sql_statement = &quot;CREATE TABLE Persons (
&nbsp;&nbsp;&nbsp;&nbsp;id INT NOT NULL AUTO_INCREMENT,
&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY KEY(id),
&nbsp;&nbsp;&nbsp;&nbsp;name CHAR(30),
&nbsp;&nbsp;&nbsp;&nbsp;age INT )&quot;;

Novo Registro
Um registro corresponde a uma linha da tabela de database, contendo valores para os campos (colunas). Para se inserir um novo registro, utiliza-se o comando:
INSERT INTO &lt;table&gt; [(&lt;column&gt;,...)] VALUES (&lt;value&gt;)

Manipulando dados

Selecionar Registros
Para se selecionar dados do database, utiliza-se o comando:
SELECT &lt;colunas&gt; FROM &lt;table&gt;
as colunas do comando determinam quais dados de cada registro é necessária (se forem todas as colunas, pode-se usar o asterisco '*'). Após obter a seleção de dados, pode-se usar a função mysqli_fetch_array(&lt;sql_selection&gt;) para obter uma linha como uma array, usando o nome da coluna como chave. Note o exemplo:


$selection = mysqli_query($conection,&quot;SELECT * FROM Persons&quot;);
while($row = mysqli_fetch_array($selection)){
&nbsp;&nbsp;&nbsp;&nbsp;echo $row['name'] . &quot; is &quot; . $row['age'] . &quto;years old.&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&lt;br&gt;&quot;;
}

Para filtrar uma seleção, limitando-a para apenas registros que cumpram um determinado critério, utiliza-se o termo WHERE na seleção. Por exemplo:


SELECT * FROM Persons WHERE age=20

O termo ORDER BY &lt;coluna&gt; ASC/DESC ordena os registros selecionados de forma ascendente (default) ou descendente pelo campo determinado. É possível ordenar por mais de uma coluna - neste caso, a segunda coluna é usada apenas se os valores da primeira coluna forem iguais.

Atualizar Registros
Para se editar um dado em um registro, utiliza-se o comando:
UPDATE &lt;table&gt; SET col1=val1, col2=val2, ... [WHERE colX=valX AND/OR colY=valY]
o termo WHERE especifica quais registros devem ser editados. Se o termo for omitido, todos os registros serão modificados.

Deletar Registros
Para deletar registros, há o comando:
DELETE FROM &lt;table&gt; WHERE col=value
onde o WHERE especifica os registroa a serem deletados. Se o termo for omitido, todos os registros serão deletados.