BVIsoft.com - документация, статьи и примеры по PHP. [Назад]

SQL - запросы и их обработка с помощью PHP (часть II)[Печать]
Разместил: admin . Раздел: Общие. Опубликовано: 09-20-2007 20:01:38

Разберем PHP-код файла firstsql.php. Начнем с собственно запроса к таблицам базы данных (БД).

$query = "SELECT * FROM `my_sql_table`";

Данный запрос можно расшифровать так: выбрать из таблицы my_sql_table БД все записи из всех полей. Таким образом знак * после слова SELECT означает "выбрать абсолютно все". Итак, запрос сформирован. Теперь его надо выполнить:

$res = mysql_query($query);

В случае успешного выполнения запроса функция mysql_query() вернет нам идентификатор ресурса $res.

Его мы должны передать в качестве параметра в функцию mysql_fetch_array(). Название этой функции говорит само за себя. Т.е. она формирует и выдает массив по выборке из таблицы БД. В случае нашей таблицы массив будет состоять из числа элементов, равных количествам записей (строк) в таблице и содержать значения id, firstname, surname для каждой строки таблицы. Следовательно, следующий код:

while($row = mysql_fetch_array($res)) { echo "Номер: ".$row['id']."<br> "; echo "Имя:".$row['firstname']."<br> "; echo "Фамилия:".$row['surname']."<br><hr> "; }

можно прокомментировать так: пока введенная нами переменная $row получает не нулевые результаты работы функции mysql_fetch_row следует выдать в броузер значение полей $row['id'], $row['firstname'], $row['surname'] с помощью echo.

Если запрос выполнить так:

$query = "SELECT firstname FROM `my_sql_table`";

то это будет означать, что из всех строк выбирается только значения поля firstname.

Следовательно предыдущий код следует переписать как:

$res = mysql_query($query); while($row = mysql_fetch_array($res)) { echo "Имя:".$row['firstname']."<br> "; }

Если Вы хотите выбрать строки таблицы с конкретным значением id где фамилия (surname) будет Петров, то запрос перепишется следующим образом:

$query = "SELECT id FROM `my_sql_table` where surname='Петров'";

А вот если потребуется узнать фамилию того, кто находится под номером, к примеру, 5, то запрос будет таким:

$query = "SELECT surname FROM `my_sql_table` where id=5";

В этом случае Вы знаете, что результатом запроса будет всего одна строка из таблицы. Т.е. нет смысла организовывать цикл с использованием while. И обработка запроса будет следующей

  $res = mysql_query($query);
  
   $row = mysql_fetch_row($res);
 
   echo "Фамилия пятого человека в списке: ".$row[0]." ";

Здесь вместо mysql_fetch_array() мы применили mysql_fetch_row(). Т.е. получить значение поля (или полей) конкретной строки. Поскольку поле у нас было одно -  surname - мы можем обратиться к единственному элементу массива $row как $row[0];.

Далее мы не будем столь подробно останавливаться на обработке запросов, а будем рассматривать наиболее типичные примеры собственно запросов.

Источник: http://web-brodilka.ru   Прочитана 670 раз.