MySQL - выберите запрос
SQL SELECTКоманда используется для извлечения данных из базы данных MySQL. Вы можете использовать эту команду в командной строке mysql>, а также в любом скрипте, например PHP.
Синтаксис
Вот общий синтаксис SQL команды SELECT для извлечения данных из таблицы MySQL:
SELECT field1, field2,...fieldN
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
Вы можете использовать одну или несколько таблиц, разделенных запятыми, для включения различных условий с помощью предложения WHERE, но предложение WHERE является необязательной частью команды SELECT.
Вы можете получить одно или несколько полей с помощью одной команды SELECT.
Вместо полей можно указать звездочку (*). В этом случае SELECT вернет все поля.
Вы можете указать любое условие с помощью предложения WHERE.
Вы можете указать смещение, используя OFFSETоткуда SELECT начнет возвращать записи. По умолчанию смещение начинается с нуля.
Вы можете ограничить количество возвратов, используя LIMIT атрибут.
Получение данных из командной строки
Это будет использовать команду SQL SELECT для извлечения данных из таблицы MySQL. tutorials_tbl.
пример
В следующем примере будут возвращены все записи из tutorials_tbl стол -
root@host# 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>
Получение данных с помощью скрипта PHP
Вы можете использовать ту же команду SQL SELECT в функции PHP mysql_query(). Эта функция используется для выполнения команды SQL, а затем другой функции PHP.mysql_fetch_array()можно использовать для получения всех выбранных данных. Эта функция возвращает строку как ассоциативный массив, числовой массив или и то, и другое. Эта функция возвращает FALSE, если строк больше нет.
Следующая программа представляет собой простой пример, который покажет, как получать / отображать записи из tutorials_tbl стол.
пример
В следующем блоке кода будут показаны все записи из таблицы 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);
?>
Содержимое строк присваивается переменной $ row, а затем печатаются значения в этой строке.
NOTE - Всегда не забывайте помещать фигурные скобки, если вы хотите вставить значение массива непосредственно в строку.
В приведенном выше примере постоянная MYSQL_ASSOC используется в качестве второго аргумента функции PHP mysql_fetch_array(), так что он возвращает строку как ассоциативный массив. С ассоциативным массивом вы можете получить доступ к полю, используя их имя вместо индекса.
PHP предоставляет еще одну функцию, называемую mysql_fetch_assoc(), который также возвращает строку как ассоциативный массив.
пример
В следующем примере отображаются все записи из таблицы tutorial_tbl с использованием функции 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);
?>
Вы также можете использовать константу MYSQL_NUMв качестве второго аргумента функции PHP mysql_fetch_array (). Это заставит функцию вернуть массив с числовым индексом.
пример
Попробуйте следующий пример, чтобы отобразить все записи из таблицы tutorials_tbl с использованием аргумента 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);
?>
Все три приведенных выше примера дадут одинаковый результат.
Освобождение памяти
Рекомендуется освобождать память курсора в конце каждого оператора SELECT. Это можно сделать с помощью функции PHP.mysql_free_result(). Следующая программа является примером, показывающим, как ее следует использовать.
пример
Попробуйте следующий пример -
<?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);
?>
При извлечении данных вы можете написать любой сложный код, но процедура останется такой же, как упомянуто выше.