Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
модуль пхп.doc
Скачиваний:
10
Добавлен:
29.08.2019
Размер:
713.22 Кб
Скачать

Взаимодействие php и MySql

В этом разделе приводятся описания наиболее часто используемых функций, позволяющих работать с MySQL средствами PHP.

Замечание

SQL может применятся в прикладных программах двумя способами: в виде встроенного SQL и интерфейса программирования приложений (Application Program Interface, API). Первый способ напоминает использование PHP - инструкции SQL размещаются среди кода прикладной программы. В настоящий момент такой стиль не поддерживает ни MySQL ни PHP. Второй подход заключается в том, что программа взаимодействует с СУБД посредством совокупности функций. Именно такой подход используется при взаимодействии PHP и MySQL.

mysql_connect

resource mysql_connect ([string server [, string username [, string password]]])

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

<?php

$dblocation = "localhost"; // Имя сервера

$dbuser = "root"; // Имя пользователя

$dbpasswd = ""; // Пароль

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx) // Если дескриптор равен 0 соединение не установлено

{

echo("<P>В настоящий момент сервер базы данных не доступен, поэтому

корректное отображение страницы невозможно.</P>");

exit();

}

?>

Переменные $dblocation, $dbuser и $dbpasswd хранят имя сервера, имя пользователя и пароль, и, как правило, прописываются в отдельном файле (к примеру, config.php), который потом вставляется в каждый PHP-файл, в котором имеется код для работы с MySQL:

<?

$dblocation = "localhost";

$dbname = "forum";

$dbuser = "root";

$dbpasswd = "";

?>

mysql_close

bool mysql_close ([resource link_identifier])

Эта функция разрывает соединение с сервером MySQL, и возвращает true при успешном выполнении операции и false в противном случае. Функция принимает в качестве аргумента дескриптор соединения с базой данных, возвращаемый функцией mysql_connect.

К примеру:

// устанавливаем соединение с базой данных

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx)

{

// Выводим предупреждение

echo ("<P>В настоящий момент сервер базы данных не доступен, поэтому

корректное отображение страницы невозможно.</P>");

// Завершаем работу в случае неудачи

exit();

}

if(mysql_close($dbcnx)) // разрываем соединение

{

echo("Соединение с базой данных прекращено");

}

else

{

echo("Не удалось завершить соединение");

}

mysql_select_db

bool mysql_select_db (string database_name [, resource link_identifier])

Использование этой функции эквивалентно вызову команды USE в SQL-запросе, т. е. функция mysql_select_db выбирает базу данных для дальнейшей работы, и все последующие SQL-запросы применяются к выбранной базе данных. Функция принимает в качестве аргументов название выбираемой базы данных database_name и дескриптор соединения resource. Функция возвращает true при успешном выполнении операции и false в противном случае. К примеру:

<?php

// Код соединения с базой данных

if (!@mysql_select_db($dbname, $dbcnx))

{

echo( "<P>В настоящий момент база данных не доступна, поэтому

корректное отображение страницы невозможно.</P>" );

exit();

}

?>

Имеет смысл помещать функции для соединения и выбора базы данных в тот же файл (config.php), где объявлены переменные с именами сервера, пользователя и паролем:

<?php

$dblocation = "localhost";

$dbname = "softtime";

$dbuser = "root";

$dbpasswd = "";

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx)

{

echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому

корректное отображение страницы невозможно.</P>" );

exit();

}

if (!@mysql_select_db($dbname, $dbcnx))

{

echo( "<P>В настоящий момент база данных не доступна, поэтому

корректное отображение страницы невозможно.</P>" );

exit();

}

?>

mysql_query

resource mysql_query (string query)

Эта функция применяется для отправки серверу SQL-запросов. Функция возвращает дескриптор запроса в случае успеха и false в случае неудачного выполнения запроса. В листинге 13.32 показан код, с помощью которого извлекается одна строка из таблицы authors базы данных forum.

<?php

include "config.php";

$ath = mysql_query("select * from authors;");

if($ath)

{

$author = mysql_fetch_array($ath);

echo "<br>имя = ".$author['name']."<br>";

echo "пароль = ".$author['passw']."<br>";

echo "e-mail = ".$author['email']."<br>";

echo "url = ".$author['url']."<br>";

echo "ICQ = ".$author['icq']."<br>";

echo "about = ".$author['about']."<br>";

echo "photo = ".$author['photo']."<br>";

echo "time = ".$author['time'];

}

else

{

echo "<p><b>Error: ".mysql_error()."</b></p>";

exit();

}

?>

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

mysql_fetch_array

array mysql_fetch_array (resource result)

Эта функция возвращает значения полей в виде ассоциативного массива, в качестве аргумента принимает дескриптор запроса возвращаемый функциейmysql_query. Вот как с помощью этой функции можно вывести все строки таблицы authors:

<?php

include "config.php";

$ath = mysql_query("select * from authors;");

if($ath)

{

// Определяем таблицу и заголовок

echo "<table border=1>";

echo "<tr><td>имя</td><td>пароль</td><td>e-mail</td><td>url</td></tr>";

// Так как запрос возвращает несколько строк, применяем цикл

while($author = mysql_fetch_array($ath))

{

echo "<tr><td>".$author['name']." </td><td>".$author['passw']."

&nbsp </td><td>".$author['email']." </td><td>".

$author['url']." </td></tr>";

}

echo "</table>";

}

else

{

echo "<p><b>Error: ".mysql_error()."</b><p>";

exit();

}

?>

Результат показан на следующем рисунке:

mysql_result

mixed mysql_result (resource result, int row)

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

<?php

include "config.php";

$ath = mysql_query("select name from authors;");

if($ath)

{

echo mysql_result($ath,0,'name');

}

else

{

echo "<p><b>Error: ".mysql_error()."</b><p>";

exit();

}

?>

mysql_fetch_object

object mysql_fetch_object (resource result)

Эта функция возвращает поля записи данных в виде объекта. Ниже приведен пример, в котором с помощью этой функции из таблицы authorsвыводятся имя, URL и e-mail авторов.

<?php

include "config.php";

$ath = mysql_query("select * from authors;");

if($ath)

{

while($row = mysql_fetch_object($ath))

{

echo "<p>name: ".$row->name."</p>";

echo "<p>url: ".$row->url."</p>";

echo "<p>email: ".$row->email."</p>";

}

}

else

{

echo "<p><b>Error: ".mysql_error()."</b><p>";

exit();

}

?>

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

mysql_fetch_row

array mysql_fetch_row (resource result)

В отличие от функции mysql_fetch_object, эта функция возвращает не объект, а массив, в котором содержатся значения полей:

<?php

include "config.php";

$ath = mysql_query("select * from authors;");

if($ath)

{

while($row = mysql_fetch_row($ath))

{

echo "<p>name: ".$row[1]."</p>";

echo "<p>url: ".$row[4]."</p>";

echo "<p>email: ".$row[3]."</p>";

}

}

else

{

echo "<p><b>Error: ".mysql_error()."</b><p>";

exit();

}

?>

Результат выполнения этого кода в точности совпадает с приведённым выше.

phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. phpMyAdmin позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.

На сегодняшний день phpMyAdmin широко применяется на практике. Последнее связано с тем, что разработчики интенсивно развивают свой продукт, учитывая все нововведения СУБД MySQL. Подавляющее большинство российских провайдеров используют это приложение в качестве панели управления для того, чтобы предоставить своим клиентам возможность администрирования выделенных им баз данных.

Приложение распространяется под лицензией GNU General Public License и поэтому многие другие разработчики интегрируют его в свои разработки, например XAMPP,DenwerAppServ.

Проект на данный момент времени локализирован на более чем 62 языках.

[править]Разработчики

Инициатором является немецкий разработчик Тобиас Ратшиллер (Tobias Ratschiller) и основывается так же как и phpPgAdmin на аналогичном приложении MySQL-Webadmin, возникшем в 1997 году.

С 2001 года проект phpMyAdmin у основателя Тобиаса Ратшиллера перенял Марк Делиcл (Marc Delisle), начав вместе с Оливером Мюллером (Olivier Müller) и Лоик Шапо (Loïc Chapeaux) новую эру phpMyAdmin.

На сегодняшний день Марк Делиcл является администратором проекта и имеет самый большой вклад в phpMyAdmin в виде написанного кода. Основными помощниками проекта являются Михал Цихар (Michal Čihař), Себастьян Мендель (Sebastian Mendel) и Герман ван Ринк (Herman van Rink).

[править]Версии

Начиная с версии 3.0.0, phpMyAdmin присоединился к инициативе GoPHP5 и отказался от поддержки совместимости с устаревшими версиями PHP и MySQL. Для работы phpMyAdmin 3.0.0 и выше, требуется наличие PHP 5.2 и MySQL 5. Для использования старых версий PHP и MySQL, продолжает развиваться вторая ветка скрипта (2.x), однако её поддержка ограничивается закрытием найденных уязвимостей, новых функций в неё не добавляется.

[править]Критика и альтернативы

В своих ранних версиях phpMyAdmin не позволял:

  • работать с хранимыми процедурами, функциям, триггерами, представлениями: создание, редактирование, удаление, импорт, экспорт.

  • сортировать данные по нескольким столбцам одновременно

  • графически отображать структуру таблиц

Из-за чего возник аналогичный скрипт Adminer (бывший phpMinAdmin) поставляемый как единый php-файл. Известен и ряд других веб-интерфейсов к MySQL, напр. Chive[1], разработанный с использованием Yii.