Команда 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 .
Вы можете использовать одну или несколько таблиц, разделенных запятой, чтобы включить различные условия, используя предложение 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, а затем выводятся значения в этой строке.
ПРИМЕЧАНИЕ. — Не забывайте ставить фигурные скобки, когда хотите вставить значение массива непосредственно в строку.
В приведенном выше примере константа 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); ?>
При получении данных вы можете написать настолько сложный код, сколько захотите, но процедура останется такой же, как указано выше.