MySQL - Selecione Consulta
O SQL SELECTcomando é usado para buscar dados do banco de dados MySQL. Você pode usar este comando no prompt mysql> assim como em qualquer script como PHP.
Sintaxe
Aqui está a sintaxe SQL genérica do comando SELECT para buscar dados da tabela MySQL -
SELECT field1, field2,...fieldN
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
Você pode usar uma ou mais tabelas separadas por vírgula para incluir várias condições usando uma cláusula WHERE, mas a cláusula WHERE é uma parte opcional do comando SELECT.
Você pode buscar um ou mais campos em um único comando SELECT.
Você pode especificar asterisco (*) no lugar dos campos. Nesse caso, SELECT retornará todos os campos.
Você pode especificar qualquer condição usando a cláusula WHERE.
Você pode especificar um deslocamento usando OFFSETde onde SELECT começará a retornar registros. Por padrão, o deslocamento começa em zero.
Você pode limitar o número de devoluções usando o LIMIT atributo.
Buscando dados de um prompt de comando
Isso usará o comando SQL SELECT para buscar dados da tabela MySQL tutorials_tbl.
Exemplo
O exemplo a seguir retornará todos os registros do tutorials_tbl mesa -
[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 1 | Learn PHP | John Poul | 2007-05-21 |
| 2 | Learn MySQL | Abdul S | 2007-05-21 |
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)
mysql>
Buscando dados usando um script PHP
Você pode usar o mesmo comando SQL SELECT em uma função PHP mysql_query(). Esta função é usada para executar o comando SQL e depois outra função PHPmysql_fetch_array()pode ser usado para buscar todos os dados selecionados. Esta função retorna a linha como uma matriz associativa, uma matriz numérica ou ambos. Esta função retorna FALSE se não houver mais linhas.
O programa a seguir é um exemplo simples que mostrará como buscar / exibir registros do tutorials_tbl mesa.
Exemplo
O bloco de código a seguir exibirá todos os registros da tabela tutorials_tbl.
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ".
"Title: {$row['tutorial_title']} <br> ".
"Author: {$row['tutorial_author']} <br> ".
"Submission Date : {$row['submission_date']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
O conteúdo das linhas é atribuído à variável $ row e os valores dessa linha são impressos.
NOTE - Lembre-se sempre de colocar colchetes quando quiser inserir um valor de array diretamente em uma string.
No exemplo acima, a constante MYSQL_ASSOC é usado como o segundo argumento para a função PHP mysql_fetch_array(), para que ele retorne a linha como uma matriz associativa. Com uma matriz associativa, você pode acessar o campo usando seu nome em vez de usar o índice.
PHP fornece outra função chamada mysql_fetch_assoc(), que também retorna a linha como uma matriz associativa.
Exemplo
O exemplo a seguir para exibir todos os registros da tabela tutorial_tbl usando a função mysql_fetch_assoc ().
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_assoc($retval)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ".
"Title: {$row['tutorial_title']} <br> ".
"Author: {$row['tutorial_author']} <br> ".
"Submission Date : {$row['submission_date']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
Você também pode usar a constante MYSQL_NUMcomo o segundo argumento para a função PHP mysql_fetch_array (). Isso fará com que a função retorne um array com o índice numérico.
Exemplo
Experimente o seguinte exemplo para exibir todos os registros da tabela tutorials_tbl usando o argumento MYSQL_NUM.
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
echo "Tutorial ID :{$row[0]} <br> ".
"Title: {$row[1]} <br> ".
"Author: {$row[2]} <br> ".
"Submission Date : {$row[3]} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
Todos os três exemplos acima produzirão o mesmo resultado.
Liberando Memória
É uma boa prática liberar a memória do cursor no final de cada instrução SELECT. Isso pode ser feito usando a função PHPmysql_free_result(). O programa a seguir é um exemplo para mostrar como deve ser usado.
Exemplo
Experimente o seguinte exemplo -
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
echo "Tutorial ID :{$row[0]} <br> ".
"Title: {$row[1]} <br> ".
"Author: {$row[2]} <br> ".
"Submission Date : {$row[3]} <br> ".
"--------------------------------<br>";
}
mysql_free_result($retval);
echo "Fetched data successfully\n";
mysql_close($conn);
?>
Ao buscar dados, você pode escrever um código tão complexo quanto desejar, mas o procedimento permanecerá o mesmo mencionado acima.