Olá Pessoal,
Vou estreiar o primeiro tutorial técnico do blog! E o tema é um dos pontos onde os alunos de Programação Web apresentam grande dificuldade: as funções para manipulação de bancos de dados MySQL com PHP. Tudo bem, eu deveria começar falando do básico do PHP, mas como minhas turmas atuais brecaram nesse ponto, vou tentar auxiliá-los com esse artigo. Bem, mãos a obra.
Um dos pontos altos para quem trabalha com PHP, ou está estudando essa linguagem, é aprender a conectar o banco de dados e montar aplicações dinâmicas integradas ao MySQL. O PHP tem um conjunto de funções para manipulação do MySQL, e podemos ver todas elas na documentação oficial da linguagem. Existem dezenas de ações e funcionalidades a serem descobertas, mas para iniciar nossos trabalhos usaremos um pequeno número de funções, que são usadas em sequência, formando o que eu chamo de “receita de bolo”. Integrar suas aplicações web ao MySQL é extremamente simples e descomplicado, você só precisa relaxar e curtir o código…
Vamos criar uma página que execute uma ação bem simples: inserir um conjunto de dados de um formulário em um tabela do banco de dados. Para isso precisaremos executar os seguintes passos:
- Conectar ao banco de dados (logar no servidor);
- Selecionar um database (escolher o banco que iremos trabalhar);
- Verificar se deu tudo certo;
- Montar uma query de inserção (escrever um INSERT INTO tabela(colunas) VALUES(valores) – básicão de SQL);
- Executar essa query no servidor (inserir os dados em uma tabela);
- Verificar se tudo deu certo.
É só seguir o script acima e tudo dará mais do que certo. Vamos precisar de alguns arquivos para executar esse exercício, e você pode baixá-los aqui. Descompacte essa pasta no seu HTDOCS, ou no diretório virtual do APACHE que você tenha criado (se não sabe o que é isso, joga no HTDOCS mesmo
. Nela você vai encontrar alguns arquivos .PHP, com a estrutura HTML dos formulários, uma folha de estilo para dar um visual bonitinho pro negócio, e um arquivo backupBanco.sql. Esse arquivo contém o banco de dados que usaremos nesse tutorial. Execute o “restore” em seu SGBD (o pessoal do SENAC usa o SQLYOG, já você pode usar qualquer outro, mas isso não altera em nada), e crie o database e tabelas. Resolvidos os preparatórios, vamos iniciar o script ali de cima.
CONECTAR AO BANCO DE DADOS
Antes de criarmos e executarmos consultas e inserções em tabelas, é preciso primeiro se conectar ao banco de dados. “Se conectar ao servidor MySQL”, isso assusta eu sei, mas relaxem que é algo super tranquilo. O PHP nos dá uma função própria para isso: ela se chama mysql_connect(). Não vou descrever o uso de cada função, até porque estou linkando cada uma delas à sua página na documentação oficial, apenas explicar sua aplicação. A mysql_connect() admite alguns parâmetros dos quais nos preocuparemos com esses três: “servidor_MySQL”, “usuario” e “senha”. Digamos que seu servidor MySQL seja “localhost”, o usuário para conexão ao banco seja “testeDiego” e a senha “123456″ (claro que você usará uma senha bem mais segura, né?), a função mysql_connect() ficaria assim: mysql_connect(”localhost”, “testeDiego”, “123456″). Simples, né? Se todos os dados estiverem corretos, e a função conseguir se conectar ao banco, ela retornará TRUE; em caso de erro, ela retornará FALSE.
* DICA: A função mysql_error() imprime o texto de erros vindo do banco de dados.
SELECIONAR UM DATABASE
Uma vez conectado ao servidor do banco, precisamos escolher qual o database iremos manipular? Você vai trabalhar com o banco da Locadora? Ou será que é a loja de informática? Ou seria aquele seu projeto de rede social? A questão é: você precisa definir qual é o database que irá trabalhar. Somente selecionado o database poderemos executar nossas querys. O PHP também tem uma função que nos permite selecionar um database: mysql_select_db(). É bem simples o seu funcionamento: abrimos uma conexão ao banco com mysql_connect(), agora precisamos associar um database à conexão ativa. Podemos especificar essa conexão via parâmetro da função, ou simplesmente deixar que ela associe o database selecionado à última conexão aberta. Desse último jeito, teremos que passar o seguinte parâmetro para a função: “conteudo” – onde “conteudo” é o nome do database criado a partir do arquivo “backupBanco.sql”, que vocês fizeram download ainda há pouco. O resultado seria esse: mysql_select_db(”conteudo”). Caso ele encontre o database, o valor retornado pela função é TRUE; caso contrário, ela retorna FALSE.
VERIFICANDO SE ESTÁ TUDO OK
Já vimos como aplicar as funções de conexão ao servidor e seleção de database. Agora vamos aplicá-las em um código PHP montado. O resultado seria esse:
1
2
3
4
| <?php
mysql_connect("localhost", "testeDiego", "123456");
mysql_select_db("conteudo");
?> |
Ok, mas e se houver algum erro? Eu preciso fazer uma verificação mínima! Já que essas funções retornam um booleano em caso de sucesso ou erro, vamos usar uma condicional (if-else) para dotar nosso script de poder decisório. O resultado seria esse:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
?> |
MONTAR QUERY DE INSERÇÃO
Já conectamos ao banco e selecionamos um database. E agora? Bem, vamos montar a query a ser executada no banco: no nosso caso será um comando INSERT. O comando SQL para essa inserção será: “INSERT INTO conteudo(titulo, conteudo) VALUES(’valorTitulo’, ‘valorConteudo’)”, onde ‘valorTitulo’ e ‘valorConteudo’ são os dados digitados pelo usuário na página “insere.php”. Sendo assim, precisarei resgatar os dados enviados pelo formulário usando o método POST. Para isso usaremos a variável superglobal $_POST[""]. A query ficará assim: “INSERT INTO conteudo(titulo, conteudo) VALUES(’”.$_POST["titulo"].”‘, ‘”.$_POST["conteudo"].”‘)”. Dessa forma minha query irá inserir os dados digitados pelo usuário. Não declaramos o campo “idconteudo”, pois ele é do tipo auto-incremento. O código ficará assim:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
//Monto minha query
$sql = "INSERT INTO conteudo(titulo, conteudo)
VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
?> |
EXECUTAR A QUERY
Uma vez montada a query, chega a hora de executá-la. O PHP possui uma função própria para enviar querys ao banco: ela se chama mysql_query(). Essa função recebe como parâmetro uma string contendo a consulta a ser executada, e retorna FALSE em caso de erro, TRUE em caso de sucesso (somente para comandos do tipo INSERT, UPDATE, DELETE etc.), ou um resource em caso de sucesso (somente para comandos do tipo SELECT, DESCRIBE ou EXPLAIN). A nossa função mysql_query() ficaria da seguinte forma: mysql_query($sql). Onde “$sql” é a query de inserção. Vamos ver como fica o código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| <?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
//Monto minha query
$sql = "INSERT INTO conteudo(titulo, conteudo)
VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi inserido com sucesso
if ($query == true) {
echo "Registro inserido com sucesso";
}
else {
echo "Não foi possível inserir seu registro";
}
?> |
Pronto! Já temos uma página que recebe dados de um formulário e os insere em uma tabela no banco de dados. Difícil, né? No próximo tutorial vamos melhorar um pouquinho esse código, e ver como extrair dados de um banco usando a query SELECT. Amanhã posto o restante.
Abraços,
Diego.