Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_15-16.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
401.92 Кб
Скачать

5) Mysqlaffected_rows()

Во многих ситуациях требуется узнать количество записей, участвующих в запросе SQL с командами INSERT, UPDATE, REPLACE или DELETE. Задача решается функцией mysql_affected_rows(). Синтаксис функции:

Int mysql_affected_rows ([int идентификатор_соединения])

Обратите внимание: параметр идентификатор_соединения не является обязательным. Если он не указывается, mysql_affected_rqws() пытается использовать последнее открытое соединение.

Пример:

<? // Подключиться к серверу и выбрать базу данных @mysql_connect("localhost", "web", "4tf9zzzf") or die("Could not connect to MySQL server!"); @mysql_select_db("company") or die("Could not select company database!"); // Создать запрос $query = "UPDATE products SET prod_name = \"cantaloupe\" WHERE prod_id = \"10001pr\""; // Выполнить запрос $result = mysql_query($query); // Определить количество обновленных записей print "Total row updated;".mysql_affected_rows(); mysql_close(); ?>

При выполнении этого фрагмента будет выведен следующий результат:

Total row updated: 1

Функция mysql_affected_rows() не работает с запросами, основанными на команде SELECT. Для определения количества записей, возвращенных при вызове SELECT, используется функция mysql_num_rows(), описанная в следующем разделе.

В одной специфической ситуации функция mysql_affected_rows() работает с ошибкой. При выполнении команды DELETE без секции WHERE функция mysql_affected_rows() всегда возвращает 0.

6) Mysql_num_rows()

Функция mysql_num_rows() определяет количество записей, возвращаемых командой SELECT. Синтаксис функции mysql_num_rows():

Int mysql_num_rows(int результат)

Пример использования mysql_num_rows():

<? // Подключиться к серверу и выбрать базу данных @mysql_connect("localhost", "web", "4tf9zzzf") or die("Could not connect to MySQL server!"); @mysql_select_db("company") or die("Could not select company database!"); // Выбрать все товары, названия которых начинаются с 'р' $query = "SELECT prod_name FROM products WHERE prod_name LIKE \"p%\""; // Выполнить запрос $result = mysql_query($query); print "Total rows selected: ".mysql_num_rows($result); mysql_close(); ?>

Поскольку таблица содержит лишь один товар, название которого начинается с буквы р (pears), возвращается только одна запись. Результат:

Total rows selected: 1

7) Mysql_result()

Функция mysql_result() используется в сочетании с mysql_query() (при выполнении запроса с командой SELECT) для получения набора данных. Синтаксис функции mysql_result():

Int mysql_result (int идентификатор_результата, int запись [, mixed поле])

В параметре идентификатор_результата передается значение, возвращенное функцией mysql_query(). Параметр запись ссылается на определенную запись набора данных, определяемого параметром идентификатор_результата. Наконец, в необязательном параметре поле могут передаваться:

  • смещение поля в таблице;

  • имя поля;

  • имя поля в формате имя_поля_имя_таблицы.

В листинге 1 используется база данных, изображенная на рис. 1.

Рисунок 1 - Пример реляционной базы данных.

Листинг 1. Выборка и форматирование данных в базе данных MySQL.

<? @mysql_connect("localhost", "web", "4tf9zzzf") or die("Could not connect to MySQL server!"); @mysql_select_db("company") or die("Could not select products database!"); // Выбрать все записи из таблицы products $query = "SELECT * FROM products"; $result = mysql_query($query); $x = 0; print "<table>\n"; print "<tr>\n<th>Product ID</th><th>Product Name</th><th>Product Price</th>\n</tr>\n"; while ($x < mysql_numrows($result)) : $id = mysql_result($result, $x. 'prod_id'); $name = mysql_result($result, $x, 'prod_name'); $price = mysql_result($result, $x, 'prod_price'); print "<tr>\n"; print "<td>$id</td>\n<td>$name</td>\n<td>$price</td>\n"; print "</tr>\n"; $x++; endwhile; print "</table>"; mysql_close(); ?>

В результате выполнения этого примера с данными, изображенными на рис. 1, будет получен следующий результат:

Листинг 11.2. Результат выполнения листинга 1.

<table> <tr> <th>Product ID</th><th>Product Name</th><th>Product Price</th> </tr> <tr> <td>1000pr</td> <td>apples</td> <td>1.23</td> </tr> <tr> <td>1001pr</td> <td>oranges</td> <td>2.34</td> </tr> <tr> <td>1002pr</td> <td>bananas</td> <td>3.45</td> </tr> <tr> <td>1003pr</td> <td>pears</td> <td>4.45</td> </tr> </table>

Функция mysql_result() удобна для работы с относительно небольшими наборами данных, однако существуют и другие функции, работающие намного эффективнее, — а именно, функции mysql_fetch_row() и mysql_fetch_array().