2.. Доступ к отдельному полю записи. Функция mysql_result

mixed mysql_result (resource result, int row)

С помощью этой функции можно получить доступ к отдельному полю записи. Допустим, нам нужно вывести имя автора, которое первым найдется в базе данных. Сделать это можно следующим образом:

<?

include "config.php";//Подключение к серверу и выбор базы данных

$ath = mysql_query("select name from customers;");

if($ath)

{

echo mysql_result($ath,0,'name');

}

else

{

echo "<p><b>Error: " .mysql_error () . "</b><p>";

exit () ;

}

?>


2.. Возвращение поля записи в виде объекта. Функция mysql_fetch_object

object mysql_fetch_object (resource result)

Эта функция возвращает поля записи данных в виде объекта.

В листинге приведен пример, в котором с помощью этой функции из таблицы customers выводятся имя, и адрес авторов:

<?

include "config.php";//Подключение к серверу и выбор базы данных

$ath = mysql_query("select * from customers;");

if($ath)

{

while($row = mysql_fetch_object($ath))

{

echo "<p>имя: ".$row->name."</p>";

echo "<p>адрес: ".$row-> city."</p>";

}

}

else

{

echo "<p><b>Error: ".mysql_error () . "</b><p>";

exit();

}

?>

Результат выполнения скрипта:


2.. Возвращение массива, в котором содержится значение поля. Функция mysql_fetch_row

array mysql_fetch_row (resource result)

В отличие от функции mysql_fetch_object, эта функция возвращает не объект, а массив, в котором содержатся значения полей:

<?

include "config.php";//Подключение к серверу и выбор базы данных

$ath = mysql_query("select * from customers;");

if($ath)

{

while($row = mysql_fetch_row($ath))

{

echo "<p>имя: ".$row[3]."</p>";

echo "<p>адрес: ".$row[2]."</p>";

}

}

else

{

echo "<p><b>Error: " .mysql_error () . "</b><p>";

exit ();

}

?>

Результаты выполнения этого кода:

2.. Пример комплексного использования информационных функций


Листинг info_1.php

<?php ## Получение информации о таблице.

include "config.php";//Подключение к серверу и выбор базы данных

// Получаем все данные таблицы.

$result = mysql_query('SELECT * FROM people');

// Запрашиваем идентификатор данных о полях таблицы.

$fields = mysql_num_fields ($result);

// Узнаем число записей в таблице.

$rows = mysql_num_rows($result);

// Получаем имя таблицы (правда, мы его и так знаем, но все же...)

$table = mysql_field_table($result,0);

echo "Таблица '$table' содержит $fields колонок и $rows cтpoк<BR>"

echo "Таблица содержит следующие поля:<ВR>";

// "Проходимся" по всем полям и выводим информацию о них.

for ($i=0; $i<$fields; $i++)

{

$type = mysql_field_type($result, $i);

$name = mysql_field_name($result, $i);

$len = mysql_field_len($result, $i);

$flags.= mysql_field_flags($result, $i) ;

echo "$name $type($len) $flags<BR>\n";

}

?>



3. MySQL И ПРОБЛЕМЫ БЕЗОПАСНОСТИ

Запросы, отправляемые серверу MySQL, представляют собой обыкновенные строки РНР:

mysql_query("INSERT INTO table SET name='$name'");

В $name может храниться строка, содержащая апострофы.

Рассмотрим, какой запрос придет серверу MySQL, если $name равно "cat's":

INSERT INTO table SET name='cat's'

Эта команда синтаксически некорректна и породит ошибку во время выполнения.

Но может быть и хуже.

Рассмотрим такой запрос:

mysql_query("DELETE FROM table WHERE name='$name'");

Если параметр $name приходит из формы, и злоумышленник указал в нем следующую строку: "!' or 1=1 or '!", то после подстановки получится такой запрос к базе данных:

DELETE FROM table- WHERE name=' !' OR 1=1 OR ' !'

Этот запрос удалит все записи из таблицы table, потому что выражение SQL 1=1 всегда истинно.

Рассмотрим два способы защиты от подобных ошибок или действий злоумышленника:

● Экранирование спецсимволов.

● Шаблоны запросов и placeholders.


Информация о работе «Работа с базой данных MySQL средствами PHP»
Раздел: Информатика, программирование
Количество знаков с пробелами: 32804
Количество таблиц: 0
Количество изображений: 25

Похожие работы

Скачать
70189
1
170

... Apache на русском языке: Если открылась начальная страница, значит Apache установлен правильно. ● Перейдите в окно Web-сервера Apache с помощью Панели задач операционной системы Windows и завершите работу сервера с помощью кнопки [X] в правом верхнем углу окна. 1.3. Установка PHP Загрузить дистрибутивов PHP можно с официальной страницы http://www.php.net/downloads.php из секции Windows ...

Скачать
85123
2
8

... от необходимости самим создавать соответствующие программы. Присутствует в ASP и PHP, отсутствует в XML. Создание серверных сценариев. Основа любого языка для создания динамических сайтов. Присутствует в ASP и PHP, отсутствует в XML. Описание данных. Важная функция, позволяющая представлять данные в едином формате, единым способом записи. Отсутствует в ASP и PHP, присутствует в XML. Наличие ...

Скачать
35425
0
0

... и программных решений, на которых основаны. Серверы размещаются в так называемых серверных комнатах. Управление серверами осуществляют системные администраторы. 2. Базы данных   2.1 Понятие базы данных (БД) Основы современной информационной технологии составляют базы данных (БД) и системы управления базами данных (СУБД), роль которых как единого средства хранения, обработки и доступа к ...

Скачать
194681
23
7

... поставленной задачи показала правильность выбранного подхода. Тем не менее, работа требует дальнейше доработаки для организации постоянного доступа читателей к библиографическим ресурсам библиотекам города через Интернет. Литература 1.          Глушаков С.В., Ломотьков Д.В. Базы данных: Учебный курс. – К.: Абрис, 2000. -504с. 2.          Джейсон Мейнджер. Java: основы программирования :Пер ...

0 комментариев


Наверх