Стандартные функции РНР для работы с MySQL
Программное обеспечение MySQL представляет собой очень быстрый многопоточный, многопользовательский надежный SQL‑сервер баз данных.
MySQL имеет двойное лицензирование. Это означает, что пользователи могут выбирать, использовать ли ПО MySQL бесплатно по общедоступной лицензии GNU General Public License (GPL) или приобрести одну из стандартных коммерческих лицензий MySQL AB.
MySQL является решением для малых и средних приложений. Входит в LAMP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Благодаря открытой архитектуре и GPL‑лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003 и Windows Vista. Существует также порт MySQL к OpenVMS. Важно отметить, что компания MySQL AB предоставляет для свободной загрузки не только исходные коды СУБД, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули, которые можно загрузить с зеркал, представленных на официальном сайте.
MySQL имеет API (интерфейс) для языков C, C++, Java, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы .NET, а также обеспечивает поддержку для ODBC посредством ODBC‑драйвера MyODBC.
В MySQL 5.0 появилась практически полная поддержка стандарта SQL и значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД.. MySQL 5.0 содержит следующие нововведения: хранимые процедуры и функции; обработчики ошибок; курсоры; триггеры; представления; информационная схема (так называемый системный словарь, содержащий метаданные).
Рассмотрим основные функции PHP для работы с MySQL.
int mysql_connect([string хост [:порт] [:/путь//к/сокету] [, string имя пользователя] [, string пароль]) -устанавливает связь с сервером MySQL После успешного подключения к MySQL можно переходить к выбору баз данных, обслуживаемых этим сервером.
В параметре хост передается имя хостового компьютера, указанное в таблицах привилегий сервера MySQL. Могут указываться необязательные параметры - номер порта, а также путь к сокету (для локального хоста). Если параметр хост не задан, mysql_connect( ) пытается установить связь с локальным хостом.
Пример открытия соединения с MySQL:
$link1=@mysql_connect("local host", "web", "4tf9zzzf") or exit("Не может установить связь с MySQL сервером!");
В данном примере localhost — имя компьютера, web— имя пользователя, а 4tf9zzzf — пароль. Знак @ перед вызовом функции mysql_connect( ) подавляет все сообщения об ошибках, выдаваемые при неудачной попытке подключения, — они заменяются сообщением, указанным при вызове exit( ). Идентификатор $link1 передается при последующих обращениях к базам данных с запросами.
mysql_pconnect( ) обеспечивает поддержку восстанавливаемых (persistent) соединений. В многопользовательских средах рекомендуется использовать mysql_pconnect( ) вместо mysql_connect( ) для экономии системных ресурсов. По типам параметров и возвращаемого значения функция mysql_pconnect( ) в точности совпадает c mysql_connect( ).
int mysql_select_db(string имя_базы_данных [, int идентификатор_соединения]) выбор базы данных, находящяйся на сервере. Параметр имя_базы_данных определяет выбираемую базу данных, идентификатор которой возвращается функцией mysql_select_db( ). Параметр идентификатор_соединения необязателен лишь при одном открытом соединении с сервером MySQL. При наличии нескольких открытых соединений этот параметр должен указываться. Пример выбора базы данных функцией mysql_select_db( ):
@mysql_connect("localhost", "web". "4tf9zzzf")
or exit("Невозможно открыть MySQL сервер!");
@mysql_select_db("company") or exit("Невозможно выбрать базу данных company!");
Если в программе выбирается только одна база данных, сохранять ее идентификатор не обязательно. Однако при выборе нескольких баз данных возвращаемые идентификаторы сохраняются, чтобы вы могли сослаться на нужную базу при обработке запроса. Если идентификатор не указан, используется последняя выбранная база данных.
int mysql_close([int идентификатор_соединения]) закрывает соединение, определяемое необязательным параметром. Если параметр не задан, функция mysql_close( ) закрывает последнее открытое соединение.
Соединения, открытые функцией mysql_pconnect( ), закрывать не обязательно.
string mysql_error() - выводится текст сообщения об ошибке.
int mysql_query (string запрос [, int идентификатор_соединения]) - обеспечивает интерфейс для обращения с запросами к базам данных.
Параметр запрос содержит текст запроса на языке SQL. Запрос передается либо соединению, определяемому необязательным параметром идентификатор_соединения, либо, при отсутствии параметра, последнему открытому соединению. В зависимости от типа запроса вызов mysql_query( ) может приводить к разным последствиям. При успешном выполнении команды SQL SELECT возвращается идентификатор результата, который впоследствии передается функции mysql_result( ) для последующего форматирования и отображения результатов запроса. Если обработка запроса завершилась неудачей, функция возвращает FALSE.
int mysql_affected_rows([int идентификатор_соединения]) – возвращаетсяколичество записей, участвующих в запросе SQL с командами INSERT, UPDATE, REPLACE или DELETE.
Пример.
@mysql_connect("localhost", "web". "4tf9zzzf") or exit("Неможет открыть MySQL сервер!");
@mysql_select_db("company") or exit("Неможет открыть базы данных company!");
$query = "UPDATE products SET prod_name = \"cantaloupe\" WHERE prod_id = \'10001pr\";
$result = mysql_query($query); // Выполнить запрос
print "Число корректируемых записей; ".mysql_affected_rows( );
mysql_close( );
int mysql_num_rows(int результат) - определяется количество записей, возвращаемых командой SELECT.
int mysql_result(int идентификатор_результата, int запись [. mixed поле"]') - функция используется в сочетании с mysql_query( ) (при выполнении запроса с командой SELECT) для получения набора данных. В параметре идентификатор_результата передается значение, возвращенное функцией mysql_query( ). Параметр запись ссылается на определенную запись набора данных, определяемого параметром идентификатор_результата. В необязательном параметре поле могут передаваться: смещение поля в таблице; имя поля; имя поля в формате имя_поля_имя_тдблицы.
array mysql_fetch_row(int результат) - присвоить значения всех полей записи элементам индексируемого массива (начиная с индекса 0).
Пример.
$query = "SELECT * FROM products";
$result = mysql_query($query); print "<table>\n";
print "<tr>\n<td> №</td><td>Наименование</td><td>Цена</td>\n</tr>\n";
while ($row = mysql_fetch_array($result))
{ print "<tr>\n"; print "<td>".$row["prod_id"]."</td>\n<td>".$row["prod_name"]."
</td>\n<td>" .$row["prod_price"]. "</td>\n"; print "</tr>\n";
}
print "</table>"; mysql_close();
array mysql_fetch_array(int идентификатор результата [, тип_индексации]) аналогична mysql_fetch_row( ), однако по умолчанию значения полей записи сохраняются в ассоциативном массиве.
Параметр тип_индексации принимает одно из следующих значений:
MYSQL_ASSOC - возвращает ассоциативный массив. Если параметр не указан, это значение используется по умолчанию;
MYSQL_NUM - возвращает массив с числовой индексацией;
MYSQL_BOTH - к полям возвращаемой записи можно обращаться как по числовым, так и по ассоциативным индексам.
Листинг 11.4 содержит очередной вариант кода листингов 11.1 и 11.3. На этот раз используется функция mysql_fetch_array( ), возвращающая ассоциативный массив полей.
Пример.
@mysql_connect( "local host", "web", "ffttss") or exit("Could not connect to MySQL server!");
@mysql_select_db( "company" ) or exit("Could not select products database!");
$query = "SELECT * FROM products"; $result = mysql_query($query);
print "<table>\n<tr>\n<td>№</td><td>Наименование</td> <td>Цена</td>\n</tr>\n";
while ($row = mysql_fetch_array($result)) ;
{print "<tr>\n<td>".$row["prod_id"]."</td>\n <td>".$row["prod_name"]."</td>\n <td>" . $row["prod_price"] . "</td>\n </tr>\n"; }
print "</table>"; mysql_close();
Дата добавления: 2015-04-15; просмотров: 1554;