Все статьи из текущего раздела

Пример работы с СУБД MySQL

На главной странице сайта, вы можете видеть семь последних заметок по всем категориям. Все статьи и заметки хранятся в базе данных MySQL на виртуальном хостинге, хотя они могут лежать и на локальном сервере. Я хотел бы на этом примере показать, как можно осуществить:

- соединение с базой данных MySQL
- выбор текущей базы данных
- произвести выполнение SQL-запросов и извлечение содержимого таблицы

Соединение с базой данных MySQL

Соединение осуществляется при помощи функции mysql_connect (), которая имеет синтаксис:

<?php
resource mysql_connect   
([string server [,
string username [,
string password [,
bool new_link [,
int client_flags]]]]])

Эта функция устанавливает соединение с сервером МуSQL, сетевой адрес которого задается параметром server. Если тестирование происходит на локальной машине, то в качестве сервера можно указать localhost или IР-адрес 127.0.0.1. Вторым и третьим аргументами этой функции являются имя пользователя базы данных username и его пароль password, соответственно.

Все аргументы функции являются необязательными. В случае их отсутствия, по умолчанию, для этой функции устанавливаются следующие параметры: server = `localhost: 3306`, username принимает значение владельца процесса сервера, а password принимает пустую строку.
Устанавливаем соединение с сервером МуSQL:

<?php
<?php
  
// Адрес сервера MySQL
  
$dblocation "localhost";
  
// Имя базы данных, на хостинге или локальной машине
  
$dbname "ru7ru_db";
  
// Имя пользователя базы данных
  
$dbuser "root";
  
// и его пароль
  
$dbpasswd "";

  
$dbcnx = @mysql_connect($dblocation$dbuser$dbpasswd);
  if (!
$dbcnx)
  {
    exit (
"<P>В настоящий момент сервер базы данных не доступен, поэтому
              корректное отображение страницы невозможно.</P>" 
);
  }
  if (!@
mysql_select_db($dbname$dbcnx))
  {
    exit( 
"<P>В настоящий момент база данных не доступна, поэтому
              корректное отображение страницы невозможно.</P>" 
);
  }
  @
mysql_query("SET NAMES `cp1251`");
?>

Здесь можно выделить два момента:
- для подавления вывода сообщений об ошибках, генерируемых PHP-интерпретатором в окно браузера, перед функцией mysql_connect () размещён символ @.
- начиная с MySQL версии 4.1, изменился порядок работы с кодировками — теперь перед началом работы необходимо выставить кодировки при помощи запроса: mysql_query (“SET NEMES’cp1251’”); Иначе русский текст будет в виде знаков вопроса ???????????.

Выбор текущей базы данных

Для выбора текущей базы данных используется функция mysqi_select_db (), которая имеет следующий синтаксис:

<?php
bool mysql_select_db  
(string database_name [, resource linf_identifier])

Функция принимает в качестве аргументов название выбираемой базы данных database_name и дескриптор соединения resource, который возвращает функция mysql_connect ().

Передача дескриптора не обязательна, если функции передается только первый аргумент.
На скриншоте, моя база с именем: ru7ru_db;

Пишим код выбора базы данных:

<?php
<?php
  
// Выбор базы данных ru7ru_db
  
$dbname "ru7ru_db";
  
// Код соединения с базой данных
  
if (!@mysql_select_db($dbname))
  {
    echo( 
"<P>В настоящий момент база данных не доступна, поэтому
              корректное отображение страницы невозможно.</P>" 
);
    exit();
  }
?>

Выполнение запроса к таблицы articles

Выполнение SQL-запросов осуществляется при помощи функции mysql_query (), которая имеет следующий синтаксис:

<?php
resource mysql_query 
(string query [, resource link_identifier])

Первый аргумент функции представляет собой строку с запросом query, второй (link_identifier) — дескриптор соединения, возвращаемый функцией
mysql_connect ().
Имеется таблица articles, где:

  1. id_article — уникальный номер;

  2. name — название статьи;

  3. mini_img — изображение;

  4. description — описание статьи;

  5. date — дата добавления;

Пишим код выборки данных из таблицы articles:

<?php
<div id="nav_title">Семь последних заметок по всем категориям</div>
<?
php 
$res 
mysql_query("SELECT  id_article, name, mini_img,
 description, date FROM articles  ORDER BY date  DESC, id_article DESC LIMIT 7"
);
if (!
$res)
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите 
об этом администратору postmaster@ru7ru.ru 
 <strong>Код ошибки:</strong></p>"
;
exit(
mysql_error());
}
if (
mysql_num_rows($res) > 0)
{
$myrow mysql_fetch_array($res);
do 
{
printf ("<p><a href=`article/index.php?id_article=%s`>%s</a></p>  
<div id=`main_index`><img src=`%s`>%s</div>
<a href=http://ru7ru.ru/article/index.php?id_article=%s>Читать 
заметку полностью</a>
Дата добавления:%s"
,$myrow[`id_article`], $myrow[`name`],$myrow[`mini_img`],
$myrow[`description`], $myrow[`id_article`], $myrow[`date`]);
}
while (
$myrow mysql_fetch_array($res));
}
else
{
echo 
"<p>Информация по запросу не может быть извлечена в таблице 
нет записей.</p>"
;
exit();
}
?>

В запросе я делаю выборку данных по дате в обратном порядке, с ограничением в семь статей. Если количество рядов в таблице больше 0, извлекаю результирующий ряд как ассоциативный массив, и переношу эти данные в переменную $res. С помощью функции printf () вывожу данные в браузер.


ПОЛЕЗНЫЕ ССЫЛКИ: