Отображение данных, хранящихся в MySQL
Чтобы отобразить какие-то данные в браузер с помощью PHP, нужно сначала получить эти данные в виде переменных PHP. При работе с MySQL без посредника (такого, как PHP) выборка данных производится с помощью команды SELECT языка SQL:
mysql> SELECT * FROM Artifacts;Необходимо отправить запрос на выбор всех полей, а результат отобразить в браузере. И здесь результат - это целая таблица значений, а точнее, указатель на эту таблицу. Наиболее популярные функции, которые извлекают из результата запроса не имя, а значение поля:
mysql_result() и mysql_fetch_array().
Синтаксис mysql_result
смешанное mysql_result (ресурс result, целое row [, смешанное field])mysql_result() возвращает значение одной ячейки результата запроса. Аргумент field может быть порядковым номером поля в результате, именем поля или именем поля с именем таблицы через точку tablename.fieldname. Если для имени поля в запросе применялся алиас ('select foo as bar from...'), используйте его вместо реального имени поля.
Работая с большими результатами запросов, следует задействовать одну из функций, обрабатывающих сразу целый ряд результата (например, mysql_fetch_row(), mysql_fetch_array() и т.д.). Так как эти функции возвращают значение нескольких ячеек сразу, они НАМНОГО быстрее mysql_result(). Кроме того, нужно учесть, что указание численного смещения (номера поля) работает намного быстрее, чем указание колонки или колонки и таблицы через точку.
Вызовы функции mysql_result() не должны смешиваться с другими функциями, работающими с результатом запроса.
Синтаксис mysql_fetch_array
массив mysql_fetch_array ( ресурс result [, целое result_type])Эта функция обрабатывает ряд результата запроса, возвращая массив (ассоциативный, численный или оба) с обработанным рядом результата запроса, или FALSE, если рядов больше нет.
mysql_fetch_array() - это расширенная версия функции mysql_fetch_row(). Помимо хранения значений в массиве с численными индексами, функция возвращает значения в массиве с индексами по названию колонок.
Если несколько колонок в результате будут иметь одинаковые названия, будет возвращена последняя колонка. Чтобы получить доступ к первым, следует использовать численные индексы массива или алиасы в запросе. В случае алиасов именно их вы не сможете использовать настоящие имена колонок, как, например, не сможете использовать "photo" в описанном ниже примере.
select Artifacts.photo as art_image, Persons.photo as pers_image from Artifacts, PersonsВажно заметить, что mysql_fetch_array() работает НЕ медленнее, чем mysql_fetch_row(), и предоставляет более удобный доступ к данным.
Второй опциональный аргумент result_type в функции mysql_fetch_array() является константой и может принимать следующие значения: MYSQL_ASSOC, MYSQL_NUM и MYSQL_BOTH. Значением по умолчанию является: MYSQL_BOTH.
Используя MYSQL_BOTH, получим массив, состоящий как из ассоциативных индексов, так и из численных. MYSQL_ASSOC вернет только ассоциативные соответствия, а MYSQL_NUM - только численные.
Замечание: имена полей, возвращаемые этой функцией, регистрозависимы.
Теперь отобразим данные из Artifacts в виде таблицы в браузере:
<?/ * сначала делаем то же, что и раньше: устанавливаем соединение, выбираем базу и получаем список и число полей в таблице Artifacts */$conn=mysql_connect("localhost","nina","123");$database = "book";$table_name = "Artifacts";mysql_select_db($database);$list_f = mysql_list_fields($database,$table_name);$n1 = mysql_num_fields($list_f);// сохраним имена полей в массиве $namesfor($j=0;$j<$n1; $j++){ $names[] = mysql_field_name ($list_f,$j);}$sql = "SELECT * FROM $table_name"; // создаем SQL запрос$q = mysql_query($sql,$conn) or die(); // отправляем // запрос на сервер$n = mysql_num_rows($q); // получаем число строк результата//рисуем HTML-таблицуecho " <TABLE BORDER=0 CELLSPACING=0 width=90% align=center><tr><TD BGCOLOR='#005533' align=center> <font color='#FFFFFF'><b>$table_name</b></font></td> </tr></TABLE>"; echo "<table cellspacing=0 cellpadding=1 border=1 width=90% align=center>"; // отображаем названия полей echo "<tr>"; foreach ($names as $val){ echo "<th ALIGN=CENTER BGCOLOR='#C2E3B6'> <font size=2>$val</font></th>"; } // отображаем значения полей echo "</tr>"; for($i=0;$i<$n; $i++){ // перебираем все строки в // результате запроса на выборку echo "<tr>"; foreach ($names as $val) { // перебираем все // имена полей $value = mysql_result($q,$i,$val); // получаем // значение поля echo "<td><font size=2> $value</font></td>"; // выводим значение поля } echo "</tr>"; }echo "</table>";Сделаем то же самое с помощью mysql_fetch_array():
<?/* ... начало то же, что и в предыдущем примере */ // отображаем значения полей// получаем значение поля в виде ассоциативного массива while($row = mysql_fetch_array($q, MYSQL_ASSOC)) { echo "<tr>"; foreach ($names as $val){ echo "<td><font size=2> $row[$val]</font></td>"; // выводим значение поля } echo "</tr>"; }echo "</table>";?>
Denwer
Все вопросы, связанные с Денвером, - на сайте http://www.denwer.ru/
Дата добавления: 2016-03-04; просмотров: 582;