Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

32.7. Вызов строки результатов БД

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

• mysql_fetch_array(),

• mysql_fetch_assoc(),

• mysql_fetch_object().

Функция mysql_fetch_array() позволяет вызывать строку результатов в качестве ассоциативного массива, числового массива или обоих. Ее синтаксис:

array mysql_fetch_array (int result [, int result_type] )

Функция возвращает массив, который соответствует выбранной строке, или же false, если больше строк не имеется.

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

Если два или более столбца результата имеют одинаковые имена, то последний столбец будет иметь приоритет по отношению к первому. Чтобы обратиться ко второму столбцу с таким же самым названием, вам необходимо воспользоваться

числовым индексом столбца или же создать условное название для столбца (например, select t1.fl назвать как foo t2.fl или как bar from t1, t2).


ВНИМАНИЕ

Функция mysql_fetch_array() работает не медленне, чем функция mysql_fetch_row().


Второй параметр функции mysql_fetch_array() — result_type — необязательный. Он является константой и может принимать следующие значения: MYSQL_ASSOC, MYSQL_NUM и MYSQL_BOTH. Этот параметр был добавлен в РНР 3.0.7.

Рассмотрим пример:

<?php

mysql_connect($host, $user, $password);

$result = mysql_db_query("database", "select user_id, fullname from table");

while ($row = mysql_fetch_array ($result)) {

    echo "user_id: " . $row["user_id"]."<br>\n";

    echo "user_id: " . $row[0]."<br>\n";

    echo "fullname: " . $row["fullname"]."<br>\n";

    echo "fullname: " . $row[1] . "<br>\n";

}

mysql_free_result ($result) ;

?>

Функция mysql_fetch_array() работает в PHP 3 и PHP 4.

Функция mysql_fetch_assoc() позволяет вызывать строки результата как ассоциативного массива. Ее синтаксис:

array mysql_fetch_assoc (int result)

Функция возвращает ассоциативный массив, который соответствует выбранной строке или же false в случае отсутствия строк.

Функция mysql_f etch_assoc() эквивалентна запросу mysql_fetch_array() с необязательным вторым параметрам, имеющим значение MYSQL_ASSOC. В этом случае будет возвращаться ассоциативный массив. Таким способом пользовались в ранних версиях РНР. Если нужны числовые индексы такие же, как и ассоциативные, лучше использовать функцию mysql_fetch_array().

Рассмотрим пример:

<?php

mysql_connect($host, $user, $password);

$result = mysql_db_query ("database", "select * from table");

while ($row = mysql_fetch_assoc ($result)) {

    echo $row["user_id"];

    echo $row["fullname" ];

}

mysql_free_result($result);

?>

Функция mysql_fetch_assoc() работает в PHP 4—4.0.3.

Существует еще одна функция, позволяющая вызывать строку результата в качестве объекта — mysql_fetch_object(). Ее синтаксис:

object mysql_fetch_object (int result [, int result_type])

Функция возвращает объект со свойствами, которые соответствуют выбранной строке, или false в случае отсутствия строк.

Функция mysql_fetch_object() подобна функции mysql_fetch_array(), однако существует небольшое отличие — вместо матрицы происходит возврат объекта. Это означает, что можно получать доступ к полям при помощи имени поля, а не их смещениями (числа — неправильные названия свойств).

Необязательный параметр result_type — константа и может принимать следующие значения: mysql_assoc, mysql_num и mysql_both. Например:

<?php

mysql_connect ($host, $user, $password);

$result = mysql_db_query ("database", "select * from table");

while ($rcw = mysql_fetch_object ($result)) {

    echo $row->user_id;

    echo $row->fullname;

}

mysql_free_result($result);

?>

Функция mysql_fetch_object() работает в PHP 3 и PHP 4.

<< Предыдущий параграф Следующий параграф >>
Оглавление