Для создания базы данных dbase_name достаточно в командной строке MySQL ввести
mysql> create database dbase_name;например, после
mysql> create database phone;результатом будет сообщение примерно такого содержания
Query OK, 1 row affected (0.03 sec)MySQL поддерживает сложную систему привилегий - то есть обеспечения прав определенного пользователя выполнять действия над объектом.
Установка привилегий проводится с помощью команды GRANT
Синтаксис GRANT privileges [columns] ON item TO user_name [IDENTIFIED BY 'password'] [WITH GRANT OPTION]Разделителем списка привилегий и перечня столбцов с привилегиями является запятая. Символ * устанавливает список привилегий для всех баз. Опция WITH GRANT OPTION дает право передавать пользователю свои привилегии. В MySQL существует три основных типа привилегий - для пользователей, для администратора и специальные привилегии.
Привилегии пользователя представляют собой набор команд MySQL с правами на их выполнение.
Привилегия | Область применения | Описание |
ALTER | таблицы | Разрешается изменять структуру таблиц, переименовывая, изменяя тип и добавляя столбцы |
CREATE | базы данных, таблицы | Разрешается создавать новые базы данных или таблицы |
DELETE | таблицы | Разрешается удалять существующие строки |
DROP | базы данных, таблицы | Разрешается удалять новые базы данных или таблицы |
INDEX | таблицы | Разрешается создавать и удалять индексы |
INSERT | таблицы, столбцы | Разрешается вставлять новые строки в таблицы |
SELECT | таблицы, столбцы | Разрешается выбирать строки в таблицах |
UPDATE | таблицы, столбцы | Разрешается изменять значения в строках |
Привилегии администратора
Привилегия | Описание |
FILE | Разрешается помещать в таблицы данные из файлов и наоборот |
PROCESS | Разрешается просматривать и удалять процессы на сервере |
SHUTDOWN | Разрешается останавливать сервер MySQL |
RELOAD | Разрешено изменять таблицы привилегий, подавлять привилегии. |
Специальные привилегии
Привилегия | Описание |
ALL | Разрешено все |
USAGE | Запрещено все |
Команда REVOKE имеет аналогичный синтаксис, что и GRANT и является его противоположностью. Приведем пример предоставления прав администратора
mysql> grant all -> on * -> to admin identified by 'mybase' -> with grant option;Пример предоставления ограниченных прав пользователю
mysql> grant select,insert,update,delete -> on mybase.* -> to client identified by 'mypassword';Описанный перечень привилегий является наиболее используемым.
Для определения базы данной, с которой требуется работать, нужно набрать строку
mysql> use mybase;Создать таблицу базы данных можно используя оператор
CREATE TABLE table_name(columns)При этом за каждым именем столбца должен следовать тип данных этого столбца и, при необходимости, спецификатор.
NOT NULL указывает, что все строки таблицы должны быть заполнены. В противном слечае, то есть если NULL, то строки могут быть не заполнены.
AUTO_INCREMENT используется в числовых столбцах. При вставке новой строки генерирует уникальное значение идентификатора на единицу больше максимального существующего.
PRIMARY KEY указывает на столбец с первичных ключом. Этот столбец индексируется автоматически.
UNSIGNED описывает поле целочисленного типа с неотрицательными данными.
Пример создания таблиц базы Phone
mysql.exe < phone.sqlгде файл phone.sql имеет вид
connect phone; CREATE TABLE Clients ( PhoneNumber VARCHAR(7) NOT NULL PRIMARY KEY, FirstName VARCHAR(15), SecondName VARCHAR(15), LastName VARCHAR(15) ); CREATE TABLE ConnectClients ( PhoneNumber VARCHAR(7) NOT NULL, DateConnect DATE NOT NULL, TimeConnect INT UNSIGNED, Tariff FLOAT(5,2) );Для того, чтобы просмотреть таблицы базы данных достаточно набрать
mysql> use phone; Database changed mysql> show tables; +-----------------+ | Tables_in_phone | +-----------------+ | clients | | connectclients | +-----------------+ 2 rows in set (0.00 sec)Просмотр структуры таблицы можно реализовать с помощью оператора DESCRIBE
mysql> describe clients; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | PhoneNumber | varchar(7) | | PRI | | | | FirstName | varchar(15) | YES | | NULL | | | SecondName | varchar(15) | YES | | NULL | | | LastName | varchar(15) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)
Синтаксис INSERT [INTO] table [(column_1,column_2,...)] VALUES (value_1,value_2,...)Пример пополнения данных в таблицу
Clients
в столбцы PhoneNumber,FirstName,LastName
insert into Clients (PhoneNumber,FirstName,LastName) values ( "1-00-01", "Иван","Иванов" );Эту же операцию можно выполнить используя следующий синтаксис
insert into Clients set PhoneNumber="1-01-00", FirstName="Петр", LastName="Иваненко";С целью дальнейшей работы создадим таблицу соединений
connect phone; insert into ConnectClients set PhoneNumber="1-00-01", DateConnect="2003-01-01", TimeConnect=15, Tariff=5.25; insert into ConnectClients set PhoneNumber="1-01-00", DateConnect="2003-01-15", TimeConnect=20, Tariff=15.00; insert into ConnectClients set PhoneNumber="1-00-01", DateConnect="2003-01-01", TimeConnect=12, Tariff=15.00; insert into ConnectClients set PhoneNumber="1-00-01", DateConnect="2003-08-10", TimeConnect=2, Tariff=15.00; insert into ConnectClients set PhoneNumber="1-01-00", DateConnect="2003-04-08", TimeConnect=12, Tariff=5.25;Для извлечения данных служит оператор SELECT.
Синтаксис SELECT items FROM tables [WHERE condition] [GROUP BY group_type] [HAVING where_definition] [ORDER BY order_type] [LIMIT limit_type]Прежде всего заметим, что поиск и извлечение данных без дополнительных опций позволяет просмотреть как всю таблицу целиком, так и каждый столбец отдельно.
Пример просмотра полей PhoneNumber
и LastName
таблицы Clients
mysql> use phone; Database changed mysql> select phonenumber,lastname -> from clients; +-------------+----------+ | phonenumber | lastname | +-------------+----------+ | 1-00-01 | Иванов | | 1-01-00 | Иваненко | +-------------+----------+Для просмотра всей таблицы достаточно записать
mysql> select * -> from clients; +-------------+-----------+------------+----------+ | PhoneNumber | FirstName | SecondName | LastName | +-------------+-----------+------------+----------+ | 1-00-01 | Иван | NULL | Иванов | | 1-01-00 | Петр | NULL | Иваненко | +-------------+-----------+------------+----------+Конструкция WHERE позволяет проводить выборку из базы по определенным условиям
Оператор | Описание |
=,>,>=,<,<=,<> или != | Проверка условия сравнения |
IS NOT NULL, IS NULL | Сравнение с пустым полем |
BETWEEN | Сравнение с диапазоном |
IN, NOT IN | Проверка на содержание в множестве |
LIKE, NOT LIKE | Проверка на соответствие образцу (шаблону) |
REGEXP | Проверка на соответствие регулярному выражению в стиле POSIX. |
При использовании соответствия LIKE образец может состоять из обычного текста со знаками процента (%) для указания совпадения с произвольным числом символов и символом подчеркивания (_) для указания совпадения с одним символом.
В случае использования нескольких критериев одновременно можно использовать операции AND или OR.
Пример
mysql> select * from clients where LastName like "Иван%" and PhoneNumber like "1-00-__"; +-------------+-----------+------------+----------+ | PhoneNumber | FirstName | SecondName | LastName | +-------------+-----------+------------+----------+ | 1-00-01 | Иван | NULL | Иванов | +-------------+-----------+------------+----------+Достаточно часто возникает необходимость провести выборку информации из нескольких таблиц. В этом случае выполнить объединение этих таблиц с сохранением отношений между ними.
Пример простого объединения двух таблиц.
mysql> select Clients.PhoneNumber, Clients.LastName, ConnectClients.DateConnect,ConnectClients.TimeC onnect -> from ConnectClients, Clients -> where Clients.PhoneNumber=ConnectClients.PhoneNumber and Clients.LastName like "Иван%" and Co nnectClients.TimeConnect>10; +-------------+----------+-------------+-------------+ | PhoneNumber | LastName | DateConnect | TimeConnect | +-------------+----------+-------------+-------------+ | 1-00-01 | Иванов | 2003-01-01 | 15 | | 1-00-01 | Иванов | 2003-01-01 | 12 | | 1-01-00 | Иваненко | 2003-01-15 | 20 | | 1-01-00 | Иваненко | 2003-04-08 | 12 | +-------------+----------+-------------+-------------+В результате из таблиц
Clients
и ConnectClients
мы извлекаем информацию состоящую из номеров телефонов, даты и времени соединения всех, чья фамилия начинается с "Иван" и время соединения больше чем 10.
При работе с базами часто возникает необходимость в различной информации о данных столбца - наибольшее или наименьшее значение, сумма всех данных и пр. С этой целью в MySQL реализованы функции агрегирования. Приведем наиболее употребительные функции агрегирования.
Функция | Описание |
AVG | Среднее значение значений столбца |
COUNT | Число ненулевых значений столбца. Если перед названием столбца поставить DISTING, то возвращает число конкретных значений в столбце, если указать COUNT(*) то подсчет количества столбцов будет проводиться независимо от значений. |
MIN | минимальное значение в столбце |
MAX | максимальное значение в столбце |
SUM | сумма значений в столбце |
Пример.
mysql> use phone; Database changed mysql> select avg(TimeConnect) -> from connectClients; +------------------+ | avg(TimeConnect) | +------------------+ | 12.2000 | +------------------+Чтобы получить подробную информацию можно использовать выборку по группе - GROUP BY.
mysql> use phone; Database changed mysql> select PhoneNumber,sum(TimeConnect) -> from connectClients -> group by PhoneNumber; +-------------+------------------+ | PhoneNumber | sum(TimeConnect) | +-------------+------------------+ | 1-00-01 | 29 | | 1-01-00 | 32 | +-------------+------------------+ 2 rows in set (0.03 sec)В данном примере для каждого телефонного номера выбрана сумма времени подключения.
При использовании функций агрегирования и функции группирования можно использовать выбор по условию. Для этой цели используется оператор HAVING. Синтаксис оператора HAVING похож на WHERE, но применяется к группам. Например, выберем все номера телефонов, суммарное время подключения которых больше 30.
mysql> use phone; Database changed mysql> select PhoneNumber,sum(TimeConnect) -> from connectClients -> group by PhoneNumber -> having sum(TimeConnect)>30; +-------------+------------------+ | PhoneNumber | sum(TimeConnect) | +-------------+------------------+ | 1-01-00 | 32 | +-------------+------------------+ 1 row in set (0.01 sec)В случае, если область вывода ограничена, то необходимо указывать количество строк, выбираемых из базы. Для этого используется оператор LIMIT. Этот оператор имеет два параметра - номер строки, с которой начинается вывод и количество выводимых строк. Заметим, что нумерация начинается с нуля. Например, если нужно вывести из списка всех клиентов только тех, которые идут под номерами 3 и 4, то это можно реализовать следующим образом.
select Clients for LastName Limit 3,4;В случае, если извлеченные из таблицы строки выводились в определенном порядке, следует использовать оператор ORDER BY в конструкции SELECT.
mysql> use phone; Database changed mysql> select LastName, FirstName -> from Clients -> order by FirstName; +----------+-----------+ | LastName | FirstName | +----------+-----------+ | Иванов | Иван | | Иваненко | Петр | +----------+-----------+ 2 rows in set (0.00 sec)Для сортировки в обратном порядке нужно к строке с
order
дописать ключевое слово ASC (от ascending).
Время от времени данные необходимо обновлять. Причиной может быть изменение тарифов, цен и пр. Для обновления данных используется оператор UPDATE.
Синтаксис UPDATE tablename SET column1=value1,column2=value2,... [WHERE condition] [LIMIT number]Здесь в таблице с именем
tablename
указанный столбец column
заменяется значением value
. Запись WHERE UPDATE позволяет проводить обновления для определенных строк, а LIMIT указывает количество строк выбранных для обновления.
Например, увеличение тарифов на 10% можно записать следующим образом
mysql> use phone; Database changed mysql> update ConnectClients -> set tariff=tariff*1.1; Query OK, 5 rows affected (0.01 sec) Rows matched: 5 Changed: 5 Warnings: 0Естественно, обновление базы не есть единственной формой ее изменения. Во время работы может появиться необходимость и в изменении структуры самой таблицы. С этой целью используется оператор ALTER TABLE. Приведем перечень наиболее часто используемых возможностей этого оператора.
Синтаксис | Описание |
ADD[COLUMN]column_name [FIRST | AFTER column] | Добавить новый столбец в указанное место. Если место не указано, то добавляется в конец. |
ADD PRIMARY KEY(column,...) | Сделать указанный столбец (столбцы) первичных ключом таблицы. |
ADD UNIQUE[index](column,...) | Добавить уникальный индекс в указанный столбец (столбцы). |
CHANGE [COLUMN] column new_descripsion | Изменить столбец column так чтобы он получил новое описание new_descripsion (включая название).
|
MODIFY [COLUMN] column new_descripsion | То же, но без возможности изменить имя. |
DROP [COLUMN] column | Удалить столбец. |
DROP INDEX index | Удалить индекс |
RENAME[AS] new_table_name | Переименовать таблицу. |
Пример. Если поле для фамилии клиента не достаточно велико, его можно расширить, используя следующую запись.
mysql> use phone; Database changed mysql> alter table Clients -> modify LastName char(25); Query OK, 2 rows affected (0.03 sec) Records: 2 Duplicates: 0 Warnings: 0
trim($ClientQuery)
).
Следующим этапом является проверка корректности запроса.
if (!$ClientQuery){ print "Повторите запрос"; exit; }Следующим этапом является подключение к серверу MySQL
@ $Db=mysql_pconnect($hostname,$username,$password);Если не указывать эти параметры, то функция использует значения принятые по умолчанию - localhost вместо URL-адреса узла, имя пользователя, под которым запущен PHP и пустая строка пароля. В случае удачного соединения функция возвращает идентификатор связи с базой данных. При завершении скрипта связь с базой разрывается. Экстренное завершение соединения реализует функция
mysql_close()
Для того, чтобы связь была постоянной используется конструкция
@ $Db=mysql_connect($hostname,$username,$password);Аналогом SQL запроса на соединение с конкретной базой phone
use phone;является функция
mysql_select_db("phone");При проведении запроса базы данных MySQL из PHP в отличие от запроса в среде MySQL, точка с запятой не требуется.
$ClientQuery= "select * from Clients where Clients.LastName like 'Иван%'";теперь выполним запрос
$result=mysql_query($ClientQuery);Можно реализовать запрос функцией
mysql_db_query()
, имеющей синтаксис
mysql_db_query(NameDataBase,StringQuery,[int DataBaseConnection])Эта функция соединяет возможности функций
mysql_select()
и mysql_query()
.
Для определения числа строк возвращаемых запросом используется функция mysql_numrows()
.
Пример использования
for ($i=0;$i < mysql_numrows($result);i++){ //обработка запроса }Заметим, что на каждом шаге выполнения цикла вызывается функция
mysql_fetch_array()
,
вызывающая каждую строку из списка результатов в виде ассоциированного массива с ключом как именем атрибута
и значением как соответствующим значением массива.
$InfoClient=mysql_fetch_array($result); print "Телефон: "; print $InfoClient["PhoneNumber"];Можно получить доступ к требуемой записи используя функцию
mysql_result()
. При этом нужно указать номер строки (начиная от нуля) и название поля, например,
$InfoClient=mysql_result($result, $i, "PhoneNumber");
Рассмотрим пример обработки данных, полученных из формы html.
Прежде всего создадим базу данных products
mysql.exe CREATE database productsДалее создадим таблицу с тем же названием.
mysql.exe <products.txtПервое поле будет содержать имя клиента, второе - адрес его электронной почты и последнее вид товара выбранного клиентом.
connect products; CREATE TABLE clients ( name VARCHAR(25), email VARCHAR(25), choise VARCHAR(8) );
Создадим форму запроса -файл shop.html
<HTML><HEAD><TITLE>Запрос</TITLE><BODY><CENTER> <h3>Информация о наших товарах</h3><P> <TABLE WIDTH = 400><TR><TD align = right><FORM ACTION="email.php" METHOD="POST"> Ваша фамилия и имя: <INPUT TYPE="text" NAME="name" SIZE="20" MAXLENGTH="30"><P>Ваш email: <INPUT TYPE="text" NAME="email" SIZE="20" MAXLENGTH="30"><P>У нас можно приобрести: <SELECT NAME="preference" ><OPTION value ="Стулья">Стулья <OPTION value = "Рога">Рога <OPTION value = "Копыта">Копыта </SELECT><P> <INPUT TYPE="submit" VALUE="Отправить запрос!"> </FORM></TD></TR></TABLE></CENTER></BODY></HTML>
Обработку запроса будем проводить в файле email.php
<? $name=$HTTP_POST_VARS["name"]; $email=$HTTP_POST_VARS["email"]; $preference=$HTTP_POST_VARS["preference"]; // Переменные $hostname = "localhost"; $username = ""; $password = ""; $dbName = "products"; /* Таблица MySQL, в которой хранятся данные */ $userstable = "clients"; /* создать соединение */ MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение "); @mysql_select_db("$dbName") or die("Не могу выбрать базу данных "); PRINT "<CENTER>"; PRINT "<h3>ООО Рога и копыта </h3> приветствует Вас, $name. "; PRINT "<p>"; PRINT "Вас интересуют $preference. <p> Подробную информацию мы пошлем вам на email:<i> $email.</i>"; /* Вставить информацию о клиенте в таблицу */ $query = "INSERT INTO $userstable VALUES('$name','$email', '$preference')"; $result = MYSQL_QUERY($query); PRINT "<p><i>Информация о вас занесена в базу данных.</i>"; PRINT "</CENTER>"; /* Закрыть соединение */ MYSQL_CLOSE(); ?>
Файл просмотра статистики info.html
<HTML><HEAD><TITLE>Запрос информации</TITLE> <BODY><CENTER><h3>Информация о наших клиентах</h3><P> <TABLE WIDTH = 400><TR><TD align = right><FORM ACTION="stat.php" METHOD="POST"> <P>Меня интересуют клиенты выбравшие: <SELECT NAME="preference" ><OPTION value ="Стулья">Стулья <OPTION value = "Рога">Рога <OPTION value = "Копыта">Копыта </SELECT><P> <INPUT TYPE="submit" VALUE="Отправить запрос!"> </FORM></TD></TR></TABLE></CENTER></BODY></HTML>
Файл обработки информации stat.php
<?/* Скрипт показывает клиентов*/ $preference=$HTTP_POST_VARS["preference"]; $hostname = "localhost"; $username = ""; $password = ""; $dbName = "products"; /* Таблица MySQL, в которой хранятся данные */ $userstable = "clients"; /* создать соединение */ $link=MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение "); @mysql_select_db($dbName,$link) or die("Не могу выбрать базу данных "); /* Выбрать всех клиентов */ $query = "SELECT * FROM $userstable WHERE choise = '$preference'"; $result = MYSQL_QUERY($query); /* Количество клиентов */ $number = MYSQL_NUMROWS($result); /* Напечатать список клиентов*/ $i = 0; IF ($number == 0) { PRINT "<CENTER><P>Желающих приобрести $preference нет</CENTER>"; } ELSEIF ($number > 0) { PRINT "<CENTER><P>Количество клиентов желающих приобрести $preference : $number<BR><BR>"; WHILE ($i < $number){ $name = mysql_result($result,$i,"name"); $email = mysql_result($result,$i,"email"); PRINT "Клиент $name желает приобрести $preference.<BR>"; PRINT "Его Email: $email."; PRINT "<BR><BR>"; $i++; } PRINT "</CENTER>"; } ?>
Эти функции обеспечивают доступ к серверам баз данных MySQL.
Больше информации о MySQL можно найти на сайте http://www.mysql.com/.
mysql_affected_rowsmysql_affected_rows -- возвращает количество столбцов, использованных предыдущими MySQL операциями
Описаниеint mysql_affected_rows (int [link_identifier]
);
mysql_affected_rows() возвращает количество столбцов, использованных запросами INSERT, UPDATE или DELETE на сервере, связываемом с определенным идентификатором связи(link_identifier). Если идентификатор связи не определен, используется последняя открытая связь. Если последний запрос был запрос DELETE без условия WHERE, ВСЕ записи будут удалены из таблицы, но эта функция возвратит нуль. Эта команда не действует при запросе SELECT, она действует только при запросах, изменяющих записи. Чтобы получить количество колонок возвращенных на запрос SELECT, используйте mysql_num_rows(). mysql_closemysql_close -- закрывает MySQL соединение
Описаниеint mysql_close (int [link_identifier]
);Возвращает: true при успешном завершении, false при ошибке mysql_close() закрывает связь с базой данных MySQL, ассоциированной с определенным идентификатором связи(link identifier. Если идентификатор связи не определен, используется последняя открытая связь. Имейте в виду, что это не всегда необходимо, так как непостоянные открытые связи автоматически закрываются в конце выполнения сценария. mysql_close() не закроет устойчивые связи сгенерированные функцией mysql_pconnect(). mysql_connectmysql_connect -- открывает соединение с MySQL сервером
Описаниеint mysql_connect (string [hostname]
[:port]
, string [username]
, string [password]
);Возвращает: Правильный идентификатор связи MySQL при успешном выполнении, или false при ошибке. mysql_connect() устанавливает соединение с MySQL сервером. Все аргументы дополнительны(опциональны), и если они пропущены, то устанавливаются по умолчанию -('localhost', имя пользователя, который владеет процессом, пустой пароль). Строка "имя сервера"("hostname") также может содержать номер порта( подобно "hostname:port"). В случае, если будет сделан второй вызов mysql_connect() с теми же аргументами, никакая новая связь не установится - вместо этого, будет возвращен идентификатор связи уже открытой связи. Как только выполнение сценария закончится, связь с сервером закроется, если оно не было явно закрыто более ранний вызовом mysql_close(). mysql_create_dbmysql_create_db -- Создает базу данных MySQL
Описаниеint mysql_create_db (string database name, int [link_identifier]
);mysql_create_db() пытается создавать новую базу данных на сервере связанном с определенным идентификатором связи. Описаниеint mysql_data_seek (int result_identifier, int row_number);Возвращает: true при успешном выполнении , false при ошибке. mysql_data_seek() перемещает внутренний указатель столбца в MySQL запросе связанного с определенным идентификатором результата чтобы указать на определенный номер столбца. Последующий вызов mysql_fetch_row() должно возвратить этот столбец. mysql_db_querymysql_db_query -- Посылает MySQL запрос
Описаниеint mysql_db_query (string database, string query, int [link_identifier]
);Возвращает: Правильный идентификатор результата MySQL в результате запроса, или false при ошибке . mysql_db_query() выбирает базу данных и выполняет запрос на нее. Если дополнительный идентификатор связи не определен, функция попытается найти открытую связь с MySQL сервером и если такая связь не обнаружена, то она попытается создать ее, как если бы функция mysql_connect() была вызвана без аргументов. Описаниеint mysql_drop_db (string database_name, int [link_identifier]
);Возвращает: true при успешном выполнении , false при неудачном завершении. mysql_drop_db() пытается удалить целую базу данных с сервера, связанного с определенным идентификатором связи. mysql_errnomysql_errno -- Возвращает номер сообщения об ошибке предыдущей операции MySQL
Описаниеint mysql_errno (int [link_identifier]
);Ошибки возвращающиеся с выходного буфера базы данных mySQL больше не делают предупреждение. Взамен, используйте эту функцию, чтобы получить номер ошибки. <?php mysql_connect("marliesle"); echo mysql_errno().": ".mysql_error()."<BR>"; mysql_select_db("nonexistentdb"); echo mysql_errno().": ".mysql_error()."<BR>"; $conn = mysql_query("SELECT * FROM nonexistenttable"); echo mysql_errno().": ".mysql_error()."<BR>"; ?> mysql_errormysql_error -- Возвращает текст сообщения об ошибке предыдущей операции MySQL
Описаниеstring mysql_error (int [link_identifier]
);Ошибки возвращающиеся с выходного буфера базы данных mySQL больше не делают предупреждение. Взамен, используйте эту функцию, чтобы получить строку описания ошибки. <?php mysql_connect("marliesle"); echo mysql_errno().": ".mysql_error()."<BR>"; mysql_select_db("nonexistentdb"); echo mysql_errno().": ".mysql_error()."<BR>"; $conn = mysql_query("SELECT * FROM nonexistenttable"); echo mysql_errno().": ".mysql_error()."<BR>"; ?> mysql_fetch_arraymysql_fetch_array -- Выбрать результат как ассоциативный массив
Описаниеarray mysql_fetch_array (int result);Возвращает результат строки запроса как массив, или false при отсутствии результата. mysql_fetch_array() является расширенной версией функции mysql_fetch_row(). Кроме того, что она сохраняет данные в пронумерованных элементах, результатного массива, она также сохраняет ассоциативную связь, используя имена полей как ключи. Если два или более столбцов имеют одинаковые имена, то связку ключ/значение получает последний из них. Чтобы получить доступ к другому столбцу(-цам) с таким же именем, вы должны использовать индексы или задать псевдонимы(alias) для этих столбцов. select t1.f1 as foo t2.f1 as bar from t1, t2
mysql_fetch_fieldmysql_fetch_field -- Получает информацию о столбце из результата и возвращает ее как объект.
Описаниеobject mysql_fetch_field (int result, int [field_offset]
);Возвращает объект, содержащий информацию о поле. mysql_fetch_field() Может быть использована для получения информации о поле в определенном результате запроса. Если параметры поля не указаны, то будет запрошено поле, которое еще не было запрошено функцией mysql_fetch_field(). Свойствами объекта являются:
mysql_fetch_lengthsmysql_fetch_lengths -- Получает максимальный размер данных для каждого выходного значения
Описаниеarray mysql_fetch_lengths (int result);Возвращает: Массив, который соответствует длинам каждого поля в последней строке, выбранной mysql_fetch_row(), или false при ошибке . mysql_fetch_lengths() хранит длины каждого столбца в последней колонке результата возвращенного функцией mysql_fetch_row() в массиве, нумеруемом с нуля. mysql_fetch_objectmysql_fetch_object -- Получает строку результата как объект.
Описаниеobject mysql_fetch_object (int result);Возвращает объект с свойствами, который соответствует полученной строке, или false если нет результата. mysql_fetch_object() подобна mysql_fetch_array(), с одним различием - вместо массива возвращается объект. Это означает, что Вы можете иметь доступ к данным только по именам полей, а не по их параметрам (индексные числа в данном случае являются неверным обращением). Вообще говоря, эта функция идентична mysql_fetch_array(), такая же быстрая как mysql_fetch_row() (различие незначительное).
mysql_fetch_rowmysql_fetch_row -- Получите строку результата как пронумерованный массив
Описаниеarray mysql_fetch_row (int result);Возвращает: Массив, который соответствует выбранным колонкам, или false если нет результата. mysql_fetch_row() выбирает столбец данных из результата, и связывает его с определенным идентификатором результата(индексом элемента массива). Запрос возвращается как массив. Каждый столбец результата хранится в элементах массива, пронумерованного с нуля. Последующий вызов функции mysql_fetch_row() должен возвратить следующую строку, или false если нет больше колонок. mysql_field_namemysql_field_name -- Получает имя определенного поля в результате
Описаниеstring mysql_field_name (int result, int field_index);mysql_field_name() возвращает имя указанного поля. Аргументами функции являются идентификатор результата и индекс поля, т.е. mysql_field_name($result,2); Возвратит имя второй области в результат, связанный с идентификатором результата($result). mysql_field_seekmysql_field_seek -- Устанавливает указатель запроса в определенное поле.
Описаниеint mysql_field_seek (int result, int field_offset);Поиск в определенном поле. Если следующий вызов mysql_fetch_field() не содержит указания поля, то должно быть возвращено именно это поле. mysql_field_tablemysql_field_table -- Получает имя таблицы, в которой находится указанное поле.
Описаниеstring mysql_field_table (int result, int field_offset);Получает имя таблицы поля. mysql_field_typemysql_field_type -- Получает тип указанного поля в результате
Описаниеstring mysql_field_type (int result, int field_offset);mysql_field_type() подобна функции mysql_field_name() . Аргументы идентичны, но возвращается тип поля. Это будет что-то из "int", "real", "string", "blob", или другие типы, которые подробно описываются в документации MySQL.
mysql_field_flagsmysql_field_flags -- Получает флаги, связанные с указанным полем в результате
Описаниеstring mysql_field_flags (int result, int field_offset);mysql_field_flags() возвращает флаги указанного поля. Флаги передаются как одно слово на флаг, разделенные одним пробелом, так, что Вы можете разделить возвращенную величину используя explode(). Если ваша текущая версия MySQL их поддерживает, могут быть получены следующие флаги : : "not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp". mysql_field_lenmysql_field_len -- Возвращает длину указанного поля
Описаниеint mysql_field_len (int result, int field_offset);mysql_field_len() возвращает длину указанного поля. mysql_free_resultmysql_free_result -- Освобождает память результата
Описаниеint mysql_free_result (int result);mysql_free_result() должна быть использована только если Вы беспокоитесь об использовании слишком большого объема памяти, во время работы вашего скрипта. Вся используемая результатом память для определенного идентификатора результата автоматически будет освобождена. mysql_insert_idmysql_insert_id -- Получает id сгенерированный предыдущим выполнением SQL-запроса INSERT
Описаниеint mysql_insert_id (int [link_identifier]
);mysql_insert_id() возвращает ID сгенерированнуые для поля с автоинкрементом(AUTO_INCREMENTED). Эта функция не использует аргументов. Она возвратит автоматически сгенерированный номер ID возвращенный последним запросом INSERT. mysql_list_fieldsmysql_list_fields -- Показывает список полей MySQL в результате запроса
Описаниеint mysql_list_fields (string database_name, string table_name, int [link_identifier]
);mysql_list_fields() извлекает информацию о заданной tablename таблице. Аргументы - имя базы данных и имя таблицы. После выполнения возвращается указатель результата, который может использоваться функциями mysql_field_flags(), mysql_field_len(), mysql_field_name(), и mysql_field_type(). Идентификатор результата является положительным целым. Функция возвращает -1 если происходит ошибка. Строка описсания ошибки будет помещена в переменную $phperrmsg, и если функция не была вызвана как @mysql() то затем также будет выведено это описание ошибки. mysql_list_dbsmysql_list_dbs -- Показывает список доступных Баз Данных на сервере
Описаниеint mysql_list_dbs (int [link_identifier]
);mysql_list_dbs() возвратит указатель результата, содержащий базы данных доступные текущему процессу mysql. Используйте функцию mysql_tablename(), чтобы просмотреть этот указатель результата. Описаниеint mysql_list_tables (string database, int [link_identifier]
);mysql_list_tables() берет имя базы данных и указатель результата очень подобно функции mysql_db_query(). Функция mysql_tablename() должна использоваться, чтобы извлечь фактические имена таблиц с указателя результата. mysql_num_fieldsmysql_num_fields -- Получает количество полей в результате.
Описаниеint mysql_num_fields (int result);mysql_num_fields() получает количество полей в установленном результате. name=mysql_num_rows mysql_num_rowsmysql_num_rows -- Получает количество столбцов в результате
Описание:int mysql_num_rows (int result);mysql_num_rows() получает количество столбцов в установленном результате mysql_pconnectmysql_pconnect -- Открывает устойчивое соединение с MySQL-сервером
Описаниеint mysql_pconnect (string [hostname]
[:port]
, string [username]
, string [password]
);Возвращает: Правильный MySQL идентификатор устойчивой связи при успешном выполнении , или false при ошибке. mysql_pconnect() действует очень похоже на mysql_connect() с двумя важными различиями. Во-первых, при соединении, функция должна сначала попытаться найти (устойчивую) связь, которая уже открыта тем же хостом, именем пользователя и паролем. Если она обнаруживается, возвратится ее идентификатор, вместо открытия нового соединения. Во-вторых, соединение с сервером SQL не закроется, когда закончится выполнение сценария. Вместо этого, связь останется открытой для последующего использования (mysql_close() не закроет связи установленные функцией mysql_pconnect()). Потому этот тип связей назван 'устойчивый'. mysql_querymysql_query -- Отправляет SQL-запрос на MySQL
Описаниеint mysql_query (string query, int [link_identifier]
);mysql_query() посылает запрос в базу данных, к настоящему времени активную на сервере, который связан с определенным идентификатором связи. Если link_identifier не указан, используется последняя открытая связь. Если связь не открыта, функция пытается установить связь, как если бы была вызвана функция mysql_connect() и использует ее. Эта функция возвращает TRUE или FALSE чтобы показать успешность выполнения запросов UPDATE, INSERT, и DELETE. При запросе SELECT она возвращает новый идентификатор результата. Ресурсы, использованные запросом затем могут быть освобождены вызовом функции mysql_free_result(). mysql_resultmysql_result -- Получает данные результата
Описаниеint mysql_result (int result, int row, mixed field);mysql_result() возвращает содержимое одной ячейки из установленного результата MySQL. Аргументом поля может быть номер или имя поля, или параметр типа имя_таблицы-точка-имя_поля(fieldname.tablename). Если имя столбца заменено псевдонимом('select foo as bar from...'), используйте псевдоним вместо имени столбца. Работая с больших результатами, Вы должны предусматривать использование одной из функций, которые выбирают целую строку(указано ниже) За счет того, что эти функции возвращают содержимое большого числа ячеек за один вызов функции, они ЗНАЧИТЕЛЬНО более быстрые чем mysql_result(). Также, имейте в виду, что определение аргумента поля числовым параметром, значительно более быстрое чем определение имени поля(fieldname) или использование аргумента tablename.fieldname. Вызов mysql_result() не должен смешиваться с вызовами других функций, которые имеют дело с установленным результатом. Рекомендуемые быстродействующие альтернативы: mysql_fetch_row(), mysql_fetch_array(), и mysql_fetch_object(). mysql_select_dbmysql_select_db -- Выбирает Базу Данных MySQL
Описаниеint mysql_select_db (string database_name, int [link_identifier]
);Возвращает: true при успешном выполнении , false при ошибке mysql_select_db() устанавливает текущую активную базу данных в сервере, которая связывается с определенным идентификатором связи. Если не определен идентификатор связи, принимается последняя открытая связь. Если связь не открыта, функция попытается установить связь, как если бы была вызвана функция mysql_connect(). Каждый последующий вызов mysql_query() будет произведен в активной базе данных. mysql_tablenamemysql_tablename -- Получает имя таблицы, содержащей указанное поле.
Описаниеstring mysql_tablename (int result, int i);mysql_tablename() берет указатель результата возвращенный функцией mysql_list_tables() а также целочисленный индекс и возвращает имя таблицы. Функция mysql_num_rows() может использоваться для того, чтобы определить количество таблиц на данном указателе результата.
|