Обработка результата запроса

Опубликовал: Понедельник, Апрель 2, 2012 в категории HTML | Пока нет комментариев

Для обработки результата запроса при процедурном стиле используются сле-

дующие функции:

? mysqli_num_rows(<Идентификатор результата>) возвращает количество записей в результате:

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) { echo mysqli_num_rows($res) . "<br>"; mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo "Не удалось установить подключение к базе данных";

}

? mysqli_field_count(<Идентификатор соединения>) возвращает количе-

ство полей в результате последнего SQL-запроса:

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) { echo mysqli_field_count($db) . "<br>"; mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo "Не удалось установить подключение к базе данных";

}

? mysqli_fetch_array(<Идентификатор результата>, [<Флаг>]) возвра- щает результат в виде списка и (или) ассоциативного массива в зависи- мости от значения необязательного параметра <Флаг>. Параметр может принимать следующие значения:

• MYSQLI_BOTH — результат в виде списка и ассоциативного массива

(значение по умолчанию);

• MYSQLI_NUM — результат в виде списка;

• MYSQLI_ASSOC — результат в виде ассоциативного массива.

Приведем пример, в котором используются все эти варианты:

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

while ($pole = mysqli_fetch_array($res)) {

echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;

}

mysqli_free_result($res);

}

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

$pole = mysqli_fetch_array($res, MYSQLI_BOTH);

echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;

$pole = mysqli_fetch_array($res, MYSQLI_NUM);

echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;

$pole = mysqli_fetch_array($res, MYSQLI_ASSOC);

echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;

mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo "Не удалось установить подключение к базе данных";

}

? mysqli_fetch_row(<Идентификатор результата>) возвращает результат в виде списка:

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

while ($pole = mysqli_fetch_row($res)) {

echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;

}

mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo "Не удалось установить подключение к базе данных";

}

? mysqli_fetch_assoc(<Идентификатор результата>) возвращает резуль-

тат в виде ассоциативного массива:

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

while ($pole = mysqli_fetch_assoc($res)) {

echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;

}

mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo "Не удалось установить подключение к базе данных";

}

? mysqli_fetch_object(<Идентификатор результата>) возвращает результат в виде объекта:

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

while ($pole = mysqli_fetch_object($res)) {

echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;

}

mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo "Не удалось установить подключение к базе данных";

}

? mysqli_data_seek(<Идентификатор результата>, <Смещение>) перемещает указатель результата на выбранную строку. Нумерация начинается с нуля:

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

mysqli_data_seek($res, 1);

$pole = mysqli_fetch_object($res);

echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;

mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo "Не удалось установить подключение к базе данных";

}

Для обработки результата запроса при объектном стиле используются сле-

дующие методы и свойства:

? num_rows возвращает количество записей в результате:

$host = "localhost";

@$db = new mysqli($host, "root", "123456", "tests");

if (!mysqli_connect_errno()) {

$db->query("SET NAMES cp1251");

if ($res = $db->query(‘SELECT * FROM `City`’)) {

echo $res->num_rows . ‘<br>’;

$res->close();

}

$db->close();

}

else {

echo "Не удалось установить подключение к базе данных";

}

? field_count возвращает количество полей в результате:

$host = "localhost";

@$db = new mysqli($host, "root", "123456", "tests");

if (!mysqli_connect_errno()) {

$db->query("SET NAMES cp1251");

if ($res = $db->query(‘SELECT * FROM `City`’)) {

echo $res->field_count . ‘<br>’;

$res->close();

}

$db->close();

}

else {

echo "Не удалось установить подключение к базе данных";

}

? fetch_array([<Флаг>]) возвращает результат в виде списка и (или) ассо- циативного массива в зависимости от значения необязательного парамет- ра <Флаг>. Параметр может принимать следующие значения:

• MYSQLI_BOTH — результат в виде списка и ассоциативного массива

(значение по умолчанию);

• MYSQLI_NUM — результат в виде списка;

• MYSQLI_ASSOC — результат в виде ассоциативного массива.

В следующем примере используются все эти варианты:

$host = "localhost";

@$db = new mysqli($host, "root", "123456", "tests");

if (!mysqli_connect_errno()) {

$db->query("SET NAMES cp1251");

if ($res = $db->query(‘SELECT * FROM `City`’)) {

while ($pole = $res->fetch_array()) {

echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;

}

$res->close();

}

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

$pole = $res->fetch_array(MYSQLI_BOTH);

echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;

$pole = $res->fetch_array(MYSQLI_NUM);

echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;

$pole = $res->fetch_array(MYSQLI_ASSOC);

echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;

$res->close();

}

$db->close();

}

else {

echo "Не удалось установить подключение к базе данных";

}

? fetch_row() возвращает результат в виде списка:

$host = "localhost";

@$db = new mysqli($host, "root", "123456", "tests");

if (!mysqli_connect_errno()) {

$db->query("SET NAMES cp1251");

if ($res = $db->query(‘SELECT * FROM `City`’)) {

while ($pole = $res->fetch_row()) {

echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;

}

$res->close();

}

$db->close();

}

else {

echo "Не удалось установить подключение к базе данных";

}

? fetch_assoc() возвращает результат в виде ассоциативного массива:

$host = "localhost";

@$db = new mysqli($host, "root", "123456", "tests");

if (!mysqli_connect_errno()) {

$db->query("SET NAMES cp1251");

if ($res = $db->query(‘SELECT * FROM `City`’)) {

while ($pole = $res->fetch_assoc()) {

echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;

}

$res->close();

}

$db->close();

}

else {

echo "Не удалось установить подключение к базе данных";

}

? fetch_object() возвращает результат в виде объекта:

$host = "localhost";

@$db = new mysqli($host, "root", "123456", "tests");

if (!mysqli_connect_errno()) {

$db->query("SET NAMES cp1251");

if ($res = $db->query(‘SELECT * FROM `City`’)) {

while ($pole = $res->fetch_object()) {

echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;

}

$res->close();

}

$db->close();

}

else {

echo "Не удалось установить подключение к базе данных";

}

? data_seek(<Смещение>) перемещает указатель результата на выбранную строку. Нумерация начинается с нуля:

$host = "localhost";

@$db = new mysqli($host, "root", "123456", "tests");

if (!mysqli_connect_errno()) {

$db->query("SET NAMES cp1251");

if ($res = $db->query(‘SELECT * FROM `City`’)) {

$res->data_seek(1);

$pole = $res->fetch_object();

echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;

$res->close();

}

$db->close();

}

else {

echo "Не удалось установить подключение к базе данных";

}

Функция mysqli_real_escape_string(<Идентификатор соединения>,

<Строка>) в процедурном стиле и метод real_escape_string(<Строка>) в объектном стиле экранируют все специальные символы в строке, учитывая кодировку соединения. Возвращают строку, которую можно безопасно ис- пользовать в SQL-запросах. Если в файле php.ini включена директива magic_quotes_gpc, то следует удалить автоматически добавленные обратные косые черты, а затем воспользоваться функцией mysqli_real_escape_string() или методом real_escape_string():

$new_city = "Д’Арк"; // Такие данные передаются из формы

$host = "localhost";

if (@$db = mysqli_connect($host, "root", "123456", "tests")) {

mysqli_query($db, "SET NAMES cp1251");

// Если директива magic_quotes_gpc включена,

// то удаляем защитные косые черты

if (get_magic_quotes_gpc()) {

$new_city = stripcslashes($new_city);

}

// Экранируем спецсимволы

$new_city = mysqli_real_escape_string($db, $new_city);

$query = "INSERT INTO `City` VALUES(NULL, ‘$new_city’)";

mysqli_query($db, $query);

if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {

while ($pole = mysqli_fetch_row($res)) {

echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;

}

mysqli_free_result($res);

}

mysqli_close($db);

}

else {

echo ’Не удалось установить подключение к базе данных’;

}

В НИМ АНИЕ !

Никогда напрямую не передавайте в SQL-запрос данные, полученные из полей формы. Это потенциальная угроза безопасности. Всегда применяйте функцию mysqli_real_escape_string() или метод real_escape_string().

Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)

Add to Social Bookmarks
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • BobrDobr
  • Mr. Wong
  • Yandex.Bookmarks
  • Text 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Pisali
  • SMI 2
  • Moe Mesto
  • 100 Zakladok
  • Vaau!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - I.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>