As 'queries' não são mais do que comandos aos 'mysql' e são idênticos aos que se podem fazer na linha de comandos.
Aliás, é, por vezes, cómodo começar por fazer os testes na própria linha de comandos e só depois fazer o código de
acesso com o PHP.
Assim basta criar uma string com o respectivo pedido, por exemplo, se quiser saber quantas entrados existem
numa relação (chamemos-lhe 'rel1'):
$q1 = "SELECT COUNT(*) FROM rel1";
Para saber todas entradas duma tabela, o comando será (em que 'f1' e 'f2' são dois campos de 'rel1'):
$q2 = "SELECT f1, f2 FROM rel1;
Para além de se extrairem resultados, é igualmente possível introduzir valores na base de dados:
$q3 = "INSERT INTO rel1 VALUES (0, \"val1\", \"val2\", ... , \"valN\");
ou alterar os seus valores:
$q4 = "UPDATE rel1 SET f1 = \"xx\" WHERE f2 = \"yy\"";
em que 'f1' e 'f2' são dois quaisquer campos de 'rel1'.
Consultas simples ao SQL:
No modo de consultas simples, a execução é feita pelo método 'query'. Assim, por exemplo
(em que '$db' é o objecto criado com a abertura do acesso à base de dados):
$result = $db->query ($q2);
em que '$result' é o retorno do método. O tipo de retorno depende da 'query' em questão.
Será 'false' se a 'query' falhar.
Para extrair a informação pode usar-se um dos métodos de 'fetch', por exemplo, 'fetch_array':
while ($row = $result->fetch_array(MYSQLI_BOTH))
printf ("%s ; %s<br>\n", $row[0], $row[1]);
Para libertar a memória associada a um resultado deve fazer-se:
$result->close(); (ou $result->free();)
Consultas preparadas ao SQL:
Nas consultas preparadas usa-se um objecto da classe 'MySQLi_STMT' retornado
pelo método 'prepare':
$stmt = $db->prepare($query);
Em seguida usa-se o método 'execute' que executa o resultado anterior:
$stmt->execute();
Depois são passadas as variáveis a usar para obter os resultados:
$stmt->bind_result($x1, $x2);
Para extrair a informação recorre-se igualmente a um ciclo de 'fetch' agora sobre o objecto '$stmt':
while ($stmt->fetch())
printf ("%s ; %s<br>\n", $x1, $x2);
e finalmente faz-se o fecho:
$stmt->close();