
Закрытие соединения
Закрытие соединения осуществляется при помощи функции mysql_close(), которая имеет следующий синтаксис:
bool mysql_close ([resourse link_indetifier])
            В качестве необязательного параметра функция принимает дескриптор открытого соединения link_indetifier. Если параметр не указан, закрывается последнее открытое соединение. Функция возвращает true в случае успеха и false — в противном случае.
<?php
              //Aдрес сервера MySQL
              $dblocation="localhost";
              //Имя базы данных на хостинге или локальной машине
              $dbname="test";
              //Имя пользователя базы данных
              $dbuser="root";
              //его пароль
              $dbpasswd=" ";
              //устанавливаем соединение с базой данных
              $dbcnx=@mysql_connect($dblocation, $dbuser, $dbpasswd);
              if(!$dbcnx) {
              exit("<p>В настоящий момент сервер базы данных не доступен, поэтому корректное отбражение страницы невозможно</p>");
              }
              //выбираем базу данных
              if(!@mysql_select_db($dbname, $dbcnx))
              {
              exit("<p>В настоящий момент база данных не доступна, поэтому корректное отбражение страницы невозможно </p>");
              }
              if(mysql_close($dbcnx)) //разрываем соединение
              {
              echo "Соединение с базой данных прекращено";
              }
              else
              {
              echo "Не удалось завершить соединение";
              }
              ?>
            Выполнение запросов
Выполнение SQL-запросов осуществляется при помощи функции mysql_query(), которая имеет следующий синтаксис:
resource mysql_query(string query [, resource link_identifier])
            Первый аргумент функции представляет собой строку с запросом query, второй link_identifier — дескриптор соединения, возвращаемый функцией mysql_connect().
Примечание. Если открытые соединения отсутствуют, функция пытается соединиться с СУБД, аналогично функции mysql_connect() без параметров. При передаче запроса функции mysql_query() точку с запятой в конце запроса, обязательную при работе с клиентом mysql, можно не ставить.
Функция возвращает дескриптор запроса в случае успеха и false в случае неудачного выполнения запроса.
<?php
              //Устанавливаем соединение с базой данных
              require_once("config.php");
              //cоздаем таблицу
              if (mysql_query("CREATE TABLE author (id_author INT NOT NULL, name TINYTEXT NOT NULL);"))
              {
              echo "Таблица успешно создана";
              }
              else
              {
              exit(mysql_error());
              }
              ?>
            При неудачном выполнении функции exit(), останавливающей работу скрипта, в качестве параметра передается значение ошибки, возвращаемой функцией mysql_error().
Выборка запросов
Дескриптор, возвращаемый функцией mysql_query(), используется далее для получения значений, возвращаемых СУБД. Обычно это осуществляется при помощи одной из пяти функций: mysql_result(), mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array(), mysql_fetch_object().
Первая функция mysql_result() возвращает результат запроса, выполненного функцией mysql_query(). С ее помощью можно получить доступ к отдельному полю записи. Синтаксис функции:
mixed mysql_result(resource result, int row [, mixed field])
            В качестве первого аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysql_query(). Второй аргумент row представляет собой номер столбца, который необходимо вернуть. Третий необязательный параметр field — это имя поля таблицы.
Для того, чтобы вывести имя автора, который первым найдется в базе данных, нужно заполнить таблицу.
<?php
              //Устанавливаем соединение с базой данных
              require_once("config.php");
              //Заполняет таблицу
              if (mysql_query("INSERT INTO author VALUES(1, 'Федя');"))
              {
              echo "Таблица успешно заполнена";
              }
              else
              {
              exit(mysql_error());
              }
              ?>
            Теперь выводим первую запись с именем автора.
<?php
              //Устанавливаем соединение с базой данных
              require_once("config.php");
              //Выполняем SQL-запрос
              $ath=mysql_query("SELECT name FROM author;");
              //Обрабатываем результаты запроса
              if($ath) echo mysql_result($ath, 0, 'name');
              else exit(mysql_error());
              ?>
            Внимание! Если вы запустили данный скрипт на своем компьютере, и вместо русских букв и слов в окне браузера выдается "абракодабра", знайте, что пора приступить к настройке кодировки.
В первую очередь проверьте файл config.php. В нем должна быть установлена кодировка, которую вы назначили при установке MySQL(смотрите файл my.ini). В файле config.php кодировка установлена с помощью функции @mysql_query("SET NAMES 'cp1251'"). Если таблица базы данных заполнялась, как в нашем примере, с помощью скрипта РНР, то должно все получиться.
Если таблица базы данных заполнялась с помощью клиентской консоли mysql и вы не смогли прочитать запрос, придется набраться терпения и подбирать кодировку в файле config.php путем тестирования, используя для этого список кодировок(cp1251, koi8r, utf8, ср866 и т.д.). По умолчанию набранный в консоли текст будет помещен в базу данных MySQL в кодировке ср866(DOS). Поэтому попробуйте иправить кодировку в файле config.php на @mysql_query("SET NAMES 'cp866_general_ci'").
Если, текст в запросе опять прочитать не удалось, тогда работу с базами данных следует организовать через Командную строку. Как это сделать подробно описано ЗДЕСЬ.
Функция mysql_fetch_row() обрабатывает результаты запроса, выполнкнного функцией mysql_query(), и возвращает неассоциированный массив. Синтаксис функции:
array mysql_fetch_row(resource result)
            В качестве единственного аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysql_query(). Возвращает массив, содержащий данные обработанного ряда, или false, если рядов больше нет. При работе с данным массивом удобно использовать функцию list(), преобразующую элементы массива в переменные.
Применение функции mysql_fetch_row()
<?php
              //Устанавливаем соединение с базой данных
              require_once("../../config/config.php");
              //Выполняем SQL-запрос
              $ath=mysql_query("SELECT*FROM tb5");
              //Проверяем выполнение SQL-запроса
              if(!$ath) exit (mysql_error());
              //Определяем таблицу и заголовок
              //Так как запрос может возвращать несколько строк, применяем цикл
              echo "<table border='1'>";
              while(list($id, $family, $name, $patron)=mysql_fetch_row($ath))
              {
              echo "<tr>
              <td>$id</td>
              <td>$family</td>
              <td>$name</td>
              <td>$patron</td>
              </tr>";
              }
              echo "</table>";
              ?>
            В окне веб-браузера это будет выглядеть ТАК.
Функция mysql_fetch_assoc() обрабатывает результаты запроса и возвращает ассоциативный массив. Синтаксис функции:
array mysql_fetch_assoc(resource result)
            В качестве единственного аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysql_query(). Возвращает массив, содержащий данные обработанного ряда, или false, если рядов больше нет.
<?php
              //Устанавливаем соединение с базой данных
              require_once("../../config/config.php");
              //Выполняем SQL-запрос
              $ath=mysql_query("SELECT*FROM tb5");
              //Проверяем выполнение SQL-запроса
              if(!$ath) exit (mysql_error());
              //Определяем таблицу и заголовок
              //Так как запрос может возвращать несколько строк, применяем цикл
              echo "<table border='1'>";
              while($author=mysql_fetch_assoc($ath))
              {
              echo "<tr>
              <td>".$author['id']."</td>
              <td>".$author['family']."</td>
              <td>".$author['name']."</td>
              <td>".$author['patron']."</td>
              </tr>";
              }
              echo "</table>"
              ?>
            В окне веб-браузера это будет выглядеть ТАК.
Функция mysql_fetch_array() возвращает результаты запроса, выполненного функцией mysql_query(), в виде массива. Причем тип массива(численный или ассоциативный) может быть задан. Синтаксис функции:
array mysql_fetch_array(resource result [, int result_type])
            В качестве первого аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysql_query(). Второй не обязательный параметр может принимать три значения:
MYSQL_ASSOC— возврат результата работы в виде ассоциативного массива;MYSQL_NUM— возврат результата работы в виде численного массива;MYSQL_BOTH— возврат результата работы в виде массива, содержащего как численные, так и ассоциативные индексы.
Примечание. По умолчанию второй аргумент принимает значение MYSQL_BOTH.
Примечание. Режим работы функции mysql_fetch_array(), принимающей в качестве второго аргумента константы MYSQL_ASSOC и MYSQL_NUM, аналогичны функциям mysql_fetch_assoc() и mysql_fetch_row() соответственно.
При возврате ассоциативного массива в качестве индексов выступают имена столбцов таблицы, из которой производится выборка.
<?php
              //Устанавливаем соединение с базой данных
              require_once("../../config/config.php");
              //Выполняем SQL-запрос
              $ath=mysql_query("SELECT*FROM tb5");
              //Проверяем выполнение SQL-запроса
              if(!$ath) exit (mysql_error());
              //Определяем таблицу и заголовок
              echo "<table border='0'>";
              //Так как запрос может возвращать несколько строк, применяем цикл
              while($author=mysql_fetch_array($ath)){
echo "<tr>
<td>".$author['id']."</td>
<td>".$author['family']."</td>
<td>".$author['name']."</td>
<td>".$author['patron']."</td>
</tr>";
}
echo "</table>"
?>
В окне веб-браузера это будет выглядеть ТАК.
Функция mysql_fetch_object() обрабатывает результат запроса функции mysql_query() и возвращает поля таблицы в виде объекта, имена членов которого совпадают с именами полей таблицы. Синтаксис функции:
object mysql_fetch_object(resource result)
            В качестве единственного аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysql_query(). Возвращает объект со свойствами, соответствующие колонкам в обработанном ряду, или false, если рядов больше нет.
Примечание. Имена полей, возвращаемых этой функцией, не зависят от регистра.
<?php
              //Устанавливаем соединение с базой данных
              require_once("../../config/config.php");
              //Выполняем SQL-запрос
              $ath=mysql_query("SELECT*FROM tb5");
              //Проверяем выполнение SQL-запроса
              if(!$ath) exit (mysql_error());
              while($row=mysql_fetch_object($ath))
              {
              echo "<p>family: ".$row->family."</p>";
              echo "<p>name: ".$row->name."</p>";
              echo "<p>patron: ".$row->patron."</p>";
              }
              ?>
            В окне веб-браузера это будет выглядеть ТАК.
Определение числа записей
Одной из распространенных задач при выборке из базы данных является определение числа записей, которые возвращает функция mysql_query(). Для этого предназначена функция mysql_num_rows(), которая имеет следующий синтаксис:
int mysql_num_rows(resource result)
            В качестве единственного аргумента result функция принимает дескриптор запроса, возвращаемый функцией mysql_query().
Примечание. Эта функция работает только с запросами SELECT. Чтобы получить количество рядов, обработанных командами INSERT, UPDATE, DELETE, следует использовать функцию mysql_num_rows().
Примечание. Функция mysql_num_fields() позволяет определить число столбцов в результате.
Функция mysql_query() в случае успеха всегда возвращает дескриптор соединения и false только в случае ошибочного синтаксиса SQL-запроса, проверка соответствия параоля в примере, который мы собираемся рассмотреть ошибочна. Такая проверка будет срабатывать в любом случае, даже если число возвращаемых записей окажется равным нулю.
Таблица tb5
            
Пример ошибочной проверки пароля
<?php
              //Устанавливаем соединение с базой данных
              require_once("config.php");
              //Формируем SQL-запрос
              $query= "SELECT*FROM tb5 WHERE family='имя' AND password='пароль'";
              //выполняем SQL-запрос
              $ath=mysql_query($query);
              //Проверяем выполнение SQL-запроса
              if(!$ath)
              {
              exit("Ошибка авторизации");
              }
              else {
              echo "Авторизация пройдена";
              }
              ?>
            Корректная проверка пароля с использование функции mysql_num_rows()
<?php
              //Устанавливаем соединение с базой данных
              require_once("config.php");
              //Формируем SQL-запрос
              $query= "SELECT*FROM tb5 WHERE family='Иванов' AND password='vovan'";
              //выполняем SQL-запрос
              $ath=mysql_query($query);
              //Проверяем выполнение SQL-запроса
              if(mysql_num_rows($ath)==0)
              {
              exit("Ошибка авторизации");
              }
              else {
              echo "Авторизация пройдена";
              }
              ?>
            Число строк можно так же определить при помощи отдельного SQL-запроса, воспользовавшись встроенной функцией MySQL COUNT():
SELECT COUNT(*) FROM tb5;
<?php
              //Устанавливаем соединение с базой данных
              require_once("config.php");
              //Выполняем SQL-запрос
              $ath=mysql_query("SELECT COUNT(*) FROM tb5");
              //Проверяем выполнение SQL-запроса
              if(!$ath) exit (mysql_error());
              echo $ath;
              ?>
            
              
              
              
              
              
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться