Especificamente, neste artigo vamos ver dois assuntos que consideramos importantes. Por um lado o método execute(), que nos permitirá executar qualquer tipo de consulta, e os métodos para realizar debug das sentenças SQL.
Por exemplo, como não existe um método específico para criar tabelas na base de dados, poderíamos criar uma com o método execute(), utilizando o seguinte código:
//Sentença SQL para criar uma tabela
$ssql = 'CREATE TABLE outras_coisas (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
coisas VARCHAR( 200 ) NOT NULL
)';
//executo a consulta
$db->execute($ssql);
Isto nos criaria a tabela "outras_coisas", com os campos indicados na sentença SQL.
Ademais, podemos enviar um segundo parâmetro à função execute() com a parametrização de valores na consulta a ser executada, tal como admitem outros métodos de SpoonDatabase. Para ver como se realizaria, vamos ver outro exemplo de sentença de inserção um pouco mais complexa.
$ssql = 'insert into usuario (nome_completo, email, password) values (:nom, :mail, :chave)
ON DUPLICATE KEY update nome_completo = :nom, password=:chave';
$db->execute($ssql, array("nom" => "Lolita Florecita", "mail" => "lolita@florita.com", "chave" => "1234"));
Portanto, com esta chamada a execute() pudemos fazer um insert um pouco mais complexo do que os que poderiam ser feitos a partir do método insert(). O efeito resultante é que, se o email indicado não está repetido em outro usuário da tabela, insere o usuário. Se o email indicado estava repetido em outro usuário, não insere nada, senão que atualiza esse usuário colocando definindo um novo nome e chave.
O modo de debug das sentenças SQL se ativa com o método setDebug(). Podemos passar um valor booleano, que indique se se ativa (true) ou não (false) o debug. Se não indicamos nada, se supõe que o estamos ativando:
$db->setDebug();
Depois poderemos fazer todas as consultas que resultem necessárias para nossa aplicação web, como poderia ser:
//inserto usuario
$dados_usuario = array("nome_completo" => "Juan Bocao", "email" => "jj@bocaoybocao.com", "password" => "loquesea");
$id_usuario = $db->insert('usuario', $dados_usuario);
//busco esse usuario
$record = $db->getRecord("select * from usuario where id_usuario=?", $id_usuario);
//apago esse usuario
$filas_afetadas = $db->delete('usuario', "id_usuario=?", $id_usuario);
Uma vez que tenhamos feito uma ou mais consultas, poderemos invocar o método getQueries() para receber um array com as consultas que Spoon executou na base de dados, de modo que comprovemos se realmente estão corretas.
//mostro as sentenças realizadas
$consultas = $db->getQueries();
Todas as consultas que foram realizadas nos chegarão em um array, que terá uma forma como esta:
Array
(
[0] => Array
(
[query] => INSERT INTO `usuario` (`usuario`.nome_completo, `usuario`.email, `usuario`.password) VALUES (?, ?, ?)
[parameters] => Array
(
[0] => Juan Bocao
[1] => jj@bocaoybocao.com
[2] => loquesea
)
)
[1] => Array
(
[query] => select * from usuario where id_usuario=?
[parameters] => Array
(
[0] => 12
)
)
[2] => Array
(
[query] => DELETE FROM `usuario` WHERE id_usuario=?
[parameters] => Array
(
[0] => 12
)
)
)
Como vemos, nos mostra o SQL realizado, antes de aplicar a parametrização dos dados da consulta e em seguida um array com todos os parâmetros aplicados a essa SQL. Todo isso será suficiente para que possamos ver se nossas consultas SQL estão bem formadas.
Nos artigos seguintes nos dedicaremos já a outros assuntos interessantes que nos oferecem as bibliotecas Spoon.