программирование, создание программ, учебник Delphi, учебник по программированию, бейсек, делфи, си, паскаль
 
 
 

 

Взаимодействие с базами данных

ODBC

В дополнение к поддержке обычных драйверов ODBC, данная группа функций позволяет работать с базами данных, поддерживающими так называемый интерфейс Unified ODBC. В число БД, использующих API Unified ODBC, входят: Adabas D (http://www.adabas.com), IBM DB2 (http://www.ibm.com/db2), iODBC (http://www.iodbc.org), Solid (http://www.solidtech.com) и Sybase SQL Anywhere (http://www. sybase.com).
Схемы работы с различными БД практически идентичны и различаются только в отношении внутреннего функционирования серверов БД.
См. также раздел «Инсталляция в системах Unix» относительно конфигурирования поддержки этих БД при компиляции.
Заметьте, что использование драйверов ODBC снижает производительность и не является оправданным, если, конечно, вы не планируете менять БД вашего приложения достаточно часто. Более обоснованно использовать первичные функции РНР интерфейса соответствующей БД.
Но что касается БД с интерфейсом Unified ODBC, то здесь не используются сами ODBC драйверы, просто все они используют единую архитектуру API, аналогичную ODBC.
odbc_connect
Подключение к источнику данных (БД)
int odbc_connect (string dsn. string user, string password [, int cursor J:ype])
Возвращает дескриптор подключения к БД (используемый последующими функциями) или О (FALSE) при ошибке. Одновременно можно открывать несколько подключений. В общем случае для открытия подключения необходимо указывать имя системного источника данных DSN, имя и пароль клиента. В Unix-системах иногда возникает проблема подключений, которая может быть устранена указали-
ем параметров подключения в одной строке аргумента dsn в виде
«DSN=DataSource:UID=UserName;PWD=Password».
В необязательном четвертом аргументе можно указать тип курсора БД, и это часто помогает решить проблемы с некоторыми БД; например, при попытке выполнения хранимых процедур (при вызове которых возникает ошибка типа: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it"), и в таких случаях может помочь указание типа курсора SQL_CUR_ USE_ODBC. Тип курсора может быть указан одной из следующих констант:

  • SQL_CUR_USE_IF_NEEDED;
  • SQL_CUR_USE_ODBC;
  • SQL_CUR_USE_DRIVER;
  • SQL_CUR_DEFAULT.

odbc_pconnect
Создание устойчивого подключения
int odbc_pconnect (string dsn, string user, string password [, \ int cursor_type])
Возвращает дескриптор подключения к БД или FALSE — при ошибке.
Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя источника данных, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.
При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. Но устойчивые подключения не работают, если РНР запускается в режиме CGI.
odbc_close
Закрытие сеанса подключения ODBC
void odbc_close (int connection_id)
Заметьте, при имеющихся незавершенных транзакциях функция не закрывает подключение.
odbc_close_all
Закрытие всех подключений ODBC
void odbc_close_aTI(void);
odbc_cursor
Определение типа курсора для подключения
string odbc_cursor (int result_id)
Возвращает имя курсора, используемого в подключении result_ld.
odbc_do
Синоним odbc_exec
int odbc_do (int conn_id, string query)
odbc_exec
Выполнение запроса SQL
int odbc_exec (int connection_id, string query_string)
Возвращает дескриптор набора записей, возвращенных запросом query_string, или FALSE — при ошибке. Параметр connectionjid должен быть ранее успешно возвращен функцией odbc_connect() или odbc_pconnect().
См. также: odbc_prepare() и odbc_execute().
odbc_prepare
Подготовка запроса
int odbc_prepare (int connection_id, string query_string)[
Функция возвращает дескриптор запроса, который затем исполь зуется в функции odbc_execute() для его исполнения, или FALSE — в случае ошибки.
odbc_execute
Выполнение подготовленного запроса
int odbc_execute (int result_id [, array parameters_array])
Выполняет запрос resu1t_id, подготовленный функцией odbc_prepare(). Возвращает TRUE или FALSE — при ошибке. В массиве parameters_array можно указать параметры запроса, если они требуются.
odbc_autocommit
Переключение режима транзакций autocommit
int odbc_autocommit (int connection_id [, int OnOff])
Если не указывается аргумент OnOff, функция возвращает текущее состояние auto-commit для подключения connection_id. True означает «разрешено», a FALSE — «не разрешено» или произошла ошибка.
Если в значении аргумента OnOff указывается значение TRUE, то последующие запросы исполняются незамедлительно, если FALSE — то они откладываются до вызова функции odbc_commit() (таким образом формируя транзакцию). При этом возвращается TRUE или FALSE — при ошибке.
По умолчанию вес запросы исполняются незамедлительно, и запрещение состояния auto-commit равносильно началу транзакции.
См. также: odbc_commit() и odbc_rollback().
odbc_commit
Завершение транзакции
int odbc_commit (int connectiorMd)
Выполняет все отложенные запросы (транзакцию) для подключения connectiorMd и возвращает TRUE или FALSE — при ошибке.
odbc_rollback
Отмена транзакции
int odbc_rollback (int connection_id)
Отменяет псе отложенные запросы (транзакцию) для подключения connection_id и возвращает TRUE или FALSE — при ошибке.
odbc_num_rows
Получение числа возвращенных записей
int odbc_num_rows (int resulted)
; В аргументе указывается дескриптор результата, возвращенный ODBC ' запросом. При ошибке возвращается -1. Для запросов INSERT, UPDATE и DELETE возвращается число вставленных, измененных, удаленных записей; для запроса SELECT — число возвращенных запросом записей (некоторые драйверы возвращают -1 вне зависимости от того, сколько записей было возвращено).
odbc_num_fields
Определение числа полей в результате
int odbc_num_fields (int result_id)
В аргументе указывается дескриптор результата, возвращенный ODBC запросом (функцией odbc_exec()). Функция возвращает число полей (столбцов), содержащихся в наборе записей, возвращенных запросом, либо -1 в случае ошибки.
Обработка полей LONGVARBINARY определяется odbc_binmode().
odbc_result
Получение данных результата запроса
string odbc_result (int result_id, mixed field)
Возвращает содержимое поля, указанного аргументом field текущей записи. Поле может быть указано номером (начиная с 1) или именем:
$item_3 = odbc_result ($Query_ID. 3);
$item_val = odbc_result ($Query_ID. "id"):
Данные полей типа long или двоичные данные возвращаются согласно установкам функций odbc_binmode() и odbcJongreadlen().
odbc_result_all
Распечатка результата запроса в таблице HTML
int odbc_result_all (int result_id [. string format])
Возвращает число выведенных записей или FALSE — при ошибке. В аргументе result_id указывается дескриптор набора записей, возвращенный функцией odbc_exec(), а в строке format можно указать атрибуты тега <TABLE ... >.
odbc_fetch_row
Установка курсора текущей записи
int odbc_fetch_row (int resu!t_id [, int rowjiumber])
Выбирает запись номер rowjiumber (или по умолчанию следующую) . из набора записей resultjid, возвращенного функциями odbc_do() или odbcjaxec(). Возвращает TRUE или FALSE — при ошибке (например, когда записи с таким номером не существует). Последующие вызовы odbc_result() будут возвращать данные из выбранной записи. Нумерация начинается с 0. Не все драйверы допускают произвольный выбор записи.
$сnn = odbc_conrect
("MyDSN"."root" "passI23"):
$rs = odbcjBxecdcnn. "SELECT * FROM tbll").
echo "Записей. ".
$nr = odbc_num_rows($rs).
echo ".иполей: ".
$nf - odbc_num_fields($rs);
// распечатать в виде [n]
'aaa'. '666'. 'ввв'. for($r=l; $r<=$nr; $r++)
{ // записи echo "\n[$r] ".
odbc_fetch_row($rs.$r).
for($f=l: $f<=$nf: $f++)
// поля echo "'",
odbc result(Srs.$f). "'.": }
odbc_fetch_into
Занесение полученной записи в массив
int odbc_fetch_into (int result id [, int rownumber. array resu"lt_array])
Заносит поля записи номер rownumber из набора записей result_id в элементы массива resu"lt_array. Возвращает число полей набора записей (результата запроса) или FALSE — при ошибке.
$cnn = odbc_connect
( 'MyDSN"."root"."pass!23").
$rs = odbc_exec
($cnn."SELECT * FROM tbll").
for($r=l; $r<=odbc_num_rows
($rs): $r++) { odbc_fetch_into($rs.$r.$arr):
$ar[]=$arr
// занести набор записей в двухмерный массив
odbc_ field_name
Определение имени поля
string odbc_field_name (int result_id, int field_number)
Возвращает имя поля по его номеру field_number в наборе записей result_id. Нумерация начинается с 1. При ошибке возвращает FALSE.
odbc_field_num
Определение порядкового номера поля
int odbc_field_num (int result_id, string field_name)
Возвращает номер поля по его имени field_name в наборе записей result_id. Нумерация начинается с 1. При ошибке возвращает FALSE.
odbc_field_type
Получение типа данных поля
string odbc_field_type (int resulted, int fieldjiumber)
Возвращает SQL-тип поля с номером field_number в наборе записей result_id. Нумерация начинается с 1. При ошибке возвращает FALSE.
odbc_field_len
Получение длины (точности) поля
int odbc_field_len (int resultjid, int fieldjiumber)
См. также: odbc_field_scale().
odbc_field_precision
Синоним odbc_fieldjen()
string odbc_field_precision (int result_id, int field_number)
odbc_field_scale
Определение точности поля
string odbc_field_scale (int result_id, int field_number)
Функция возвращает число сохраняемых десятичных знаков после запятой для полей дробных чисел.
odbc_free_result
Освобождение ресурсов, занятых набором записей
int odbcjreej-esult (Int result_id)
Всегда возвращает TRUE. Поскольку при завершении сценария освобождаются вес выделенные ему ресурсы, использовать данную функцию имеет смысл только в случае крайней экономии памяти, расходуемой сценарием.
Если транзакция была начата, но не завершена (см. odbc_autocommit()), данная функция отменяет ее.
odbc_binmode
Определение обработки двоичных полей
int odbc_binmode (int result_id, int mode)
Функция управляет обработкой полей ODBC SQL типов BINARY, VARBINARY, LONGVARBINARY. Если resultjd равен О, то установки будут применяться к новым наборам записей.

  • ODBC_BINMODE_PASSTHRU - пропускать двоичные поля;
  • ODBC_BINMODE_RETURN — возвращать двоичные поля как есть (по умолчанию); ,
  • ODBC_BINMODE_CONVERT - возвращать двоичные поля, конвертируя.

Пропуск (в нервом случае) означает, что при использовании функции odbc_fetch_into() для полей этого типа будет возвращаться nycтая строка.
В последнем случае конвертация означает, что каждый байт данных будет представлен двумя шестнадцатсричными цифрами, например, двоичный байт 00000001 будет представлен как "01", а 11111111 — как "FF".
Обработка длинных двоичных полей также зависит от параметра, установленного функцией odbcJongreadlen().

odbc_longreadlen
Обработка полей LONG
int odbc_longreadlen (int result_id, Int length)
Функция управляет обработкой полей ODBC SQL типов LONG, LONGVARBINARY. В аргументе length указывается, сколько байтов следует возвращать из полей данных типов. По .умолчанию возвращается 4096 байтов.
См. также odbc_binmode().
odbc_setoption
Настройка параметров ODBC
int odbc_setoption (int id. int function, int option, int parara)
Если в аргументе function указывается значение 1, то тогда настраиваются параметры подключения (в этом случае в аргументе id необходимо указывать дескриптор подключения); если указывается 2, то настраиваются параметры запроса (тогда в id указывается настраиваемый запрос).
Это позволяет устранить проблемы с некоторыми своеобразными драйверами ODBC. Конечно, вы должны понимать, какой эффект будет иметь установка того или иного параметра для конкретного драйвера. Пользуйтесь документацией ODBC и не забывайте, что 1 функциональность различных версий драйверов может различаться.
Так как использование этой функции сильно зависит от специфики ODBC драйвера, использовать ее в публикуемых сценариях РНР не рекомендуется. Имейте также в виду, что некоторые параметры доступны только после открытия подключения или подготовки запроса.
Аргумент option - номер устанавливаемого параметра, а рагат — ее значение.
При ошибке возвращается FALSE; иначе TRUE.
// Номер параметра SQL_AUTOCOMM!T
в SQLSetConnectOptionO: 102
// Значение 1 для
SQL_AUTOCOMMIT - SQL_AUTOCOMMIT_ON.
// Следующая строка имеет тот же эффект, что и
// odbc_autocorrmit($conn. TRUE);
odbc_setoption (Sconn. 1. 102. 1):
// Номер параметра SQL_QUERY_TIMCOUT
в SQLSetStmtOption(): 0
// Следующая строка устанавливает
предел выполнения запроса в 30 сек.
tresult = odbc_prepare ($conn. $sq!):
odbc_setoption (Sresult. 2. 0. 30). odbc_execute
(Sresult):
odbc_tables
Получение списка таблиц источника данных
int odbc_tables (Int connection_id [, string qualifier [,
string owner [, string name [, string table_type>)
Возвращает в наборе записей перечисление имеющихся в источнике данных connection_id таблиц (определенного типа table_type). Возвращаемый набор записей содержит следующие ноля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLE_NAME — имя таблицы;
  • TABLE_TYPE — тип таблицы; например, «TABLE», «VIEW»;
  • REMARKS — примечания; например, «MySQL table».

Возвращаемый набор записей сортируется в порядке: TABLE_TYPE, TABLE_ QUALIFIER, TABLEJJWNER, TABLE_NAME.
Аргументы owner и name могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).
Чтобы получить перечисление возможных значений аргументов qua- / li-ficr, owner и table type, используется следующая семантика:

  • Если qualifier = "%", a owner и name — пустые строки, то возвраща- \ ется набор записей, содержащий перечисление возможных квали-фикаторов источника данных. (Все поля, за исключением TABLE_ QUALIFIER содержат пустые значения NULL.) Обычно это каталоги (БД), но не все БД используют их.
  • Если owner = "%", a qualifier и name — пустые строки, то возвращается набор записей, содержащий перечисление владельцев источника данных. (Все поля, за исключением TABLE_OWNER, содержат пустые значения NULL.)
  • Если tablejtype = "%", a qualifier, owner и name — пустые строки, то возвращается набор записей, содержащий перечисление возможных типов таблиц источника данных. (Все поля, за исключением TABLE_TYPE, содержат пустые значения NULL.)

Если table_type не пустая строка, то она должна содержать перечисление через запятую типов запрашиваемых таблиц, (например, в виде: «'TABLE1.'VIEW'» или «TABLE, VIEW»).
$rs = odbc_tables($cnn. "".""."%". 'TABLF" ):
// все имеющиеся таблицы
См. также odbc_tableprivileges().
odbc_tableprivileges
Получение списка привилегий таблиц
int odbc_tableprivileges (int connect1on_id [, string qualifier [, string owner [, string name]]])
Возвращает список таблиц и присвоенных им привилегий в наборе записей или FALSE при ошибке. Возвращаемый набор записей сортируется в порядке: TA8LEJUALIFIER, TA8LE_OWNER, TABLEJAME и содержит следующие поля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLEJJAME;
  • GRANTOR;
  • GRANTEE;
  • PRIVILEGE;
  • IS_GRANTABLE.

Аргументы owner и name могут содержать шаблоны («%» заменяет .. ноль и более символов, а «_» — один символ).
См. описание odbc tables().
odbc_statistics
Получение описания таблицы
int odbc_statisties (int connection_id, string qualifier, string owner, string tablejiame, int unique, int accuracy)
Возвращает список таблиц и их индексов в наборе записей или FALSE — при ошибке. Возвращаемый набор записей сортируется в порядке: NONJJNIQUE, TYPE, INDEX_QUALIFIER, INDEXJAME и SEQ_IN_INDEX и содержит следующие ноля:

  • TABLE_QUALIFIER;
  • TABLE JMIER;
  • TABLE NAME;
  • NONJJNIQUE;
  • INDEX_QUALIFIER;
  • INDEX_NAME;
  • TYPE;
  • SEQ_IN_INDEX;
  • COLLATION;
  • CARDINALITY;
  • PAGES;
  • FILTER_CONDITION.

odbc_columns
Перечисление полей заданной таблицы
int odbc_columns (int connection_id [, string qualifier [, string owner [, string tablejiame [, string column_name>)
Возвращает список полей таблицы table_name в наборе записей или FALSE — при ошибке. Возвращаемый набор записей сортируется в порядке: TABLE_QUALIFIER, TABLE_OWNER и TABLEJAME и содержит следующие поля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLE_NAME;
  • COLUMN_NAME;
  • DATA_TYPE;
  • TYPE_NAME;
  • PRECISION;
  • LENGTH;
  • SCALE;
  • RADIX;
  • NULLABLE;
  • REMARKS.

Аргументы owner, tablejname и columnjiame могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).
См. также odbc_columnprivileges().
odbc_columnprivileges
Перечисление полей заданной таблицы с их привилегиями
int odbc_co1umnprivileges (int connection_id [, string qualifier [, string owner [, string table_name [, string column_name>)
Возвращает список полей таблицы table_name в наборе записей или FALSE — при ошибке. Возвращаемый набор записей сортируется в порядке: TABLE_QUALIFIER, TABLE_OWNER и TABLE_NAME и содержит следующие поля:

  • TABLE_QUALIFIER;
  • TABLEJMER;
  • TABLE_NAME;
  • GRANTOR;
  • GRANTEE;
  • PRIVILEGE;
  • IS_GRANTABLE.

Аргумент column_name может содержать шаблоны («%» заменяет ноль и более символов, а <<_» — один символ).
odbc_gettypeinfo
Определение типов поддерживаемых данных
int odbc_gettypeinfo (Int connectien_id [, int data_type])
Возвращает набор записей, содержащий перечисление поддерживаемых БД типов данных; если необходимо выяснить, поддерживается ли конкретный тип данных, его необходимо указать в аргументе data_type. При ошибке возвращается FALSE.
А В наборе записей возвращаются следующие поля:

  • TYPEJIAME;
  • OATA_TYPE;
  • PRECISION;
  • LITERAL_PREFIX;
  • LITERAL_SUFFIX;
  • CREATE_PARAMS;
  • NULLABLE;
  • CASE_SENSITIVE;
  • SEARCHABLE;
  • UNSIGNED_AnRIBUTE;
  • MONEY;
  • AUTO_INCREMENT;
  • LOCAL_TYPE_NAME;
  • MINIMUM_SCALE;
  • MAXIMUM_SCALE.

Записи сортируются по полям DATA_TYPE и TYPE_NAME.
odbc_primarykeys
Подбор поля, способного быть первичным ключом таблицы
int odbc_primarykeys (int connection_id, string qualifier, string owner, string table)
Возвращает набор записей, содержащий список полей, которые могут претендовать на роль первичного ключа таблицы table. При ошибке возвращается FALSE.
В наборе записей возвращаются следующие поля:

  • TABLE_QUALIFIER;
  • TABLE_OWNER;
  • TABLEJAME;
  • COLUMN_NAME;
  • KEYJEQ;
  • PK_NAME.

odbc_foreignkeys
Получение списка внешних ключей
int odbc_foreignkeys (int connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)
Если pk_table содержит имя таблицы, то функция возвращает набор записей, содержащий первичный ключ этой таблицы и все внешние ключи (foreign keys), которые на него ссылаются.
Если fk_tab!e содержит имя таблицы, то функция возвратцает набор записей, содержащий все внешние ключи этой таблицы и корреспондирующие первичные ключи в других таблицах.
Если и pk_table и fk_table содержат имена таблиц, функция возвращает внешний ключ таблицы fk_table, который указывает на первичный ключ в таблице pk_table.
В возвращаемом наборе записей содержатся следующие поля:

  • PKTABLE_QUALIFIER;
  • PKTABLE_OWNER;
  • PKTABLEJJAME;
  • PKCOLUMN_NAME;
  • FKTABLE_QUALIFIER;
  • FKTABLE_OWNER;
  • FKTABLE_NAME;
  • FKCOLUMN_NAME;
  • KEYJEQ;
  • UPDATE_RULE;
  • DELETE_RULE;
  • FK_NAME; . PKJWME.

odbc_procedures
Получение списка хранимых процедур
int odbc_procedures (int connection_id [, string qualifier [, string owner [, string name]]])
Возвращает список хранимых процедур name в наборе записей, содержащем следующие поля:

  • PROCEDURE_QUALIFIER;
  • PROCEDUREJMER;
  • PROCEDURE_NAME;
  • NUMJNPUTJ» ARAMS;
  • NUM_OUTPUT_PARAMS;
  • • NUM_RESULT_SETS;
  • REMARKS;
  • PROCEDURE_TYPE.

Аргументы owner и name могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).
odbc_procedurecolumns
Получение списка параметров хранимых процедур
int odbc_procedurecolumns (int connection_id [, string qualifier [, string owner [, string proc [, string column>)
Возвращает список хранимых процедур (с их входными и выходными параметрами и описанием возвращаемых ими полей) в наборе записей, содержащем следующие поля:

  • PROCEDURE_QUALIFIER;
  • PROCEDURE J1WNER;
  • PROCEDUREJAME;
  • COLUMN_NAME;
  • COLUMN_TYPE;
  • DATATYPE;
  • TYPEJAME;
  • PRECISION;
  • LENGTH;
  • SCALE;
  • RADIX;
  • NULLABLt;
  • REMARKS.

Записи сортируются по полям PROCEDURE_QUALIFIER, PROCEDURE_OWNER, PROCEDURE_NAME и COLUMNJYPE.
Аргументы owner, ргос и column могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один символ).
odbc_specialcolumns
Получение списка специальных полей
int odbc_specialcolumns (int connectionjd, int type. string qualifier, string owner, string table, int scope, int nullable)
Если в аргументе type указано значение SQL_BEST_ROWID, возвращаются поля, уникально идентифицирующие каждую запись в таблице.
Если в аргументе type указано значение SQLJ!OWVER, возвращаются оптимальные ноля, извлекая значения которых, можно уникально идентифицировать любую запись указанной таблицы (вне зависимости от изменений, производимых в таблице).
Поля возвращаются в наборе записей (сортируемом по полю SCOPE), содержащем следующие ноля:

  • SCOPE;
  • COLUMN_NAME;
  • DATAJYPE;
  • TYPE_NAME;
  • PRECISION;
  • LENGTH;
  • SCALE;
  • PSEUDO_COLUMN.

MySQL
Эти функции позволяют работать с серверами БД MySQL.
См. также документацию но адресу: http://www.mysql.com/documentation/.
mysql_connect
Подключение к серверу MySQL
int mysql_connect ([string hostname[:port][:/path/to/socket] [, string username [, string password]]])
Возвращает дескриптор подключения к БД или FALSE — при ошибке. Обычно следующим шагом янляется выбор БД на сервере функцией mysql_selectjJb().
Для неуказанных аргументов используются следующие умолчания: host:port = 'localhost:3306', username = имя пользователя запустившего текущий процесс сервера password = ""; либо значения из файла конфигурации.
Строка hostname может также включать номер порта (в виде "hostname: port") или путь к соксту для локальной машины в системах Unix":/path/to/socket".
При ошибке также выдается предупреждение. Выдачу предуиреждения можно блокировать, указав перед именем функции оператор «@».
Если функция повторно вызывается с теми же аргументами, новое подключение не создается, а возвращается идентификатор имеющегося.
В конце сценария принято закрывать подключение функцией mysql_ close(), но это можно не делать, поскольку РHР автоматически закрывает все (неустойчивые) подключения при завершении сценария.
<?php
Slink = @mysql_connect ("serve"", "user", "passed")
or die ("Невозможно подключиться");
print ("Подключение к MySQL успешно"):
mysql_close ($link); ?>
См. также: mysql_pconnect() и mysql_close().
mysql_pconnect
Создание устойчивого подключения к серверу MySQL
int mysql pconnect ([string hostname[ port][:/path/to/socket] [, string username [, string password]]])
Возвращает дескриптор подключения к БД или FALSE — при ошибке (также выдается предупреждение). Обычно следующим шагом является выбор БД на сервере функцией mysql_select_db().
Для неуказанных аргументов используются следующие умолчания: host:port = 'localhost:3306', username = имя пользователя запустившего текущий процесс сервера password = ""; либо значения из файла конфигурации.
Строка hostname может также включать номер порта (в виде "hostname: port") или путь к соксту для локальной машины в системах Unix ":/path/to/socket".
mysql_pconnect() действует подобно mysql_connect() с двумя отличиями.

  • Перед подключением функция пытается проверить, имеется ли уже открытое (устойчивое) подключение с параметрами (имя сервера, пользователя и пароль), аналогичными указанным. Если такое подключение обнаруживается, то возвращается его идентификатор вместо создания нового подключения.
  • При завершении сценария подключение не закрывается, а остается действительным для дальнейшего использования. (Функция mysql_ close() не может закрыть подключения, созданные с помощыо mysql_pconnect()).

mysql_close
Отключение от сервера MySQL
int mysql_close ([int 1ink_identifier]) :
Возвращает TRUE или FALSE - при ошибке.
Идентификатор закрываемого подключения указывается в аргументе; если его не указывать, то закрывается последнее открытое данным сценарием подключение.
Фактически использование данной функции не является обязательным, так как РНР автоматически закрывает все незакрытые неустойчивые подключения при завершении сценария.
Заметьте: устойчивые подключения, созданные функцией mysql_ pconnect(), не закрываются.
См. также: mysql_connect() и mysql pconnect().
tmysql_change_user
Изменение параметров подключения int mysql_change_user (string user, string password [. string database [, int linkjidentifier]])
Если не указываются БД или подключение, то используется последняя активная БД. Если авторизация проходит безуспешно, параметры подключения не изменяются.
Работает с MySQL 3.23.3 и выше.
mysq_l list_dbs
Получение списка БД на сервере MySQL
int mysql_list_dbs ([int link_identifier])
Возвращает набор записей, содержащий список БД на сервере.
Slink = mysql_connect
('localhost'. 'myname'. 'secret').
$db_list = mysqljist_dbs($link)
while ($row = mysql_fetch_object
($db_list)) { echo $row->Database .
"\n": }
В данном примере также может использоваться функция mysql_ fetch_row() или ей подобная.
Заметьте: список можно получить, не имея привилегий, то есть не указывая пароль доступа.
Ранее функция называлась mysq'Mistdbs().
mysql_db_name
Получение имени БД из списка
int mysql_db_name (int result, int row [, mixed field])
В аргументе result указывается дескриптор набора записей, полученный от функции mysql_list_dbs(). В аргументе row указывается номер записи. При ошибке возвращает FALSE. Фактически данная функция является излишней.
<?php error_reportirg(E_ALL);
mysq]_connect('dbhost'. 'username'. 'password').
Sdbjist = mysql Jist_dbs():
for ($1 = 0. $1 < ($cnt= mysql_num_rows($cibjist)),
$1 + 1-)
{ echo mysql_db_name($db_list. $i) .
"\n"; } ?>
Ранее функция называлась mysql_dbname().
mysql_select_db
Выбор БД MySQL
int mysql_select_db (string database_name [, int link_identifier])
Возвращает TRUE или FALSE — при ошибке.
Устанавливает БД с именем database_name, активной для текущего или указанного в link_identifier подключения. Если подключений не имеется, то косвенно вызывается функция mysql_connect() с параметрами по умолчанию.
Последующие запросы, выполняемые функцией, будут адресованы данной БД.
См. также: mysql_connect(), mysqlj>connect() и mysql_query().
Ранее функция называлась mysql_selectdb().
mysql_create_db
Создание БД MySQL
int mysql_create_db (string dbnarae [, int link_identifier])
Создаст БД dbname, используя подключение link_identifier.
<?php /
Slink = mysql_pconnect
("localhost". "me", "paswd"): /
if (mysql_create_db ("my_db"))
{ print ("БД создана \n");
} else {
printf ("Ошибка: Xs\n". mysql_error
()). } ?>
Ранее функция называлась mysql_createdb().
См. также mysql_drop_db().
mysql_drop_db
Удаление БД
int mysql_drop_db (string databasejname [, int link_identifier])
Возвращает TRUE, если БД databasejiame успешно удалена, или FALSE — при ошибке.
См. также mysql_create_db().
Ранее функция называлась mysql_dropdb().
mysql_ list_tables
Получение списка таблиц в БД
int mysql_list_tables (string database [. int linkjidentifier])
Возвращает набор записей, из которого можно извлечь имена таблиц функцией mysql_tablename(). Следующий пример распечатывает имена всех БД и таблиц, в них содержащихся.
<?
Slink = mysql_connect
('127 0.0 Г. 'root1. '157984').
Sdbjist = mysql_list_dbs($link).
while ($r_db = mysql_fetch_object(SdbJisU)
{ echo $r_db->Database . "\n":
// распечатать список таблиц Stbljist =
mysql_lTst_tables(Sr_db->Database):
for($i =0: $i < mysql_num_rows
($tbl_list): Si++) {
echo " - ". mysql_tablename
($tbl_list. $1). "\n": } ?>
Ранее функция называлась mysql_listtables().

mysql_tablename
Получение имени таблицы
string mysql_tablename (int result, int i)
Функция используется для получения имени таблицы (с номером i) из набора записей, возвращенного функцией mysql_list_tables().
<?php
mysql_connect ("localhost:3306"):
Sresult = mysql_list_tables ("mydb"):
$1 = 0; while
(Si < mysql_num_rows
(Sresult)) { $tb_names[$i] =
mysql_tablename (Sresult. Si):
echo Stb_names[Si] . "<BR>";
$l++; } ?>
mysql_query
Выполнение запроса к БД
int mysql_query (string query [, int linkjdentifier])
Посылает запрос текущей БД, активной для текущего подключения или указанного в link_identifier. Если подключений не имеется, то косвенно вызывается функция mysql_connect() с параметрами по умолчанию.
Заметьте: SQL-выражение, указанное в аргументе query, не должно оканчиваться точкой с запятой. Если выражение содержит ошибки
или при его выполнении возникают ошибки (например, если текущие привилегии не позволяют выполнить запрос), то функция возвращает FALSE.
Если запрос успешно выполнился, то возвращается набор записей (не забывайте, он также может содержать 0 записей), который может быть обработан функциями:

  • mysql_resul t() — получить элемент набора записей;
  • mysql_fetch_array() — занести запись в массив;
  • mysql_fetch_row() — занести запись в нумерованный массив;
  • mysql_fetch_assoc() — занести запись в ассоциативный массив;
  • mysql_fetch_object() — занести запись в объект.

Чтобы выяснить, сколько записей было возвращено командой SELECT, используйте функцию mysql_num_rows(); а чтобы выяснить, сколько записей было изменено в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE, используйте функцию mysql_affected_rows().
После обработки результатов запроса он может быть удален функцией mysql_free_result(). Хотя в этом ист необходимости, так как ресурсы автоматически освобождаются при завершении сценария.
См. также: mysql_db_query(), mysql_select_db() и raysql_connect().
mysql_db_query
Выполнение запроса к указанной БД
int mysql_db_query (string database, string query [, int linkjdentifier])
Функция эквивалентна последовательному выполнению функций:
mysql_select_db (string database [. int linkjdentifier]); mysql_query (string query [. int link_identifier]};
См. также: mysql_db_query(), mysql_connect(). Ранее функция называлась mysql().
mysql_num_rows
Получение числа возвращенных записей
int mysql_num_rows (int result)
Функция возвращает число записей, возвращенных командами SELECT. Чтобы выяснить, сколько записей было изменено в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE, используйте функцию mysql_affected_rows().
<?php
Sconn = mysql_connec
t("hostaddress". "username". "password");
mysql_select_db("database".Sconn):
$rs = mysql_query("SELECT
FROM Accounts".$conn);
$N = mysql num_rows($rs),
echo "Всего записей: $N". ?>
См. также: mysql_db_query(), mysql_query() и mysql_fetch_row().
Ранее функция называлась mysql_numrows().
mysql_affected_rows
Получение числа измененных записей в БД
int mysql_affected_rows ([int link_iidentifier])
Возвращается число записей, измененных в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE.
Если последним запросом была команда DELETE без ограничения WHERE, то из таблицы будут удалены все записи, но эта функция возвратит 0.
Чтобы выяснить, сколько записей было возвращено командой SELECT, используйте функцию mysql_num_rows().
mysql_insert_id
Получение значения последнего автоинкремента
int mysqi_insert_id ([int link_identifier])
При добавлении записей в таблицу командой INSERT для поля, имеющего свойство AUTO_INCREMENT, значение генерируется автоматически (вне зависимости от того, было ли оно задано) и его можно получить с помощью этой функции. Это значение можно использовать для модификации последней добавленной записи.
Это значение также можно получить с помощью SQL запроса MySQL: "SELECT LASTJNSERTJDO".
Если последним запросом значение AUTO_INCREMENT сгенерировано не было, то функция возвратит 0. Заметьте также, что если тип автоин-крементируемого поля был BIGINT, то он будет преобразован к типу LONG, и результат может быть неверным.
Команда LAST_INSERT_ID() имеет два преимущества: она всегда хранит значение последнего автоинкремента (это значение не сбрасывается в 0 между запросами) и она всегда возвращает правильное значение.
mysql_data_seek
Перемещение курсора набора записей
int mysql_data_seek (int result_identifier, int rowjiumber)
При каждом вызове функции mysql_fetch_row() (или подобной ей) внутренний курсор записи смешается на следующую запись. Данная функция позволяет свободно перемещать курсор в наборе записей result_identifier, так, чтобы он указывал на запись с номером row_ number (нумерация начинается с 0).
Функция возвращает TRUE или FALSE — при ошибке.
<?php
Slink = mysql_pconnect
("сервер", "имя", "пароль")
or die ("Нет коннекта"):
mysql_select_db ("samp_db")
or die ("Базу не выбрать").
Squery = "SLLtCT lastjname. firstjname
FROM friends";
$result = mysql_query i$query)
or die ("Query failed").
# отобразить записи в обратном порядке
for ($i = mysql_num_rows ($re.sult) - 1
: $1 >=0; $1--) { if (!mysql_data_seek
(Sresult. $1)) {
printf ("Cannot seek to row 5!d\n". $1);
continue: )
if(!($row = mysql_fetch_object (SresulL)))
continue.
pnntf ("Is s<BR>\n". $row->labt_name.
$row->first_name): }
mysql free_result (Sresult). ?>
mysql_free_result
Уничтожение набора записей
int mysql_free_result (int result)
Функция освобождает память, занимаемую набором записей result, возвращенным запросом. Ее следует использовать только в том случае, если приходится очень экономить память, так как память автоматически освобождается при завершении сценария.
Ранее функция называлась mysql_freeresult().
Обработка результатов запроса
mysql_result
Получение определенного элемента набора записей
mixed mysql_result (int result, int row [, mixed field])
Возвращает содержимое ячейки из набора записей resul t. В аргументе row указывается номер записи (нумерация начинается с 0), в аргументе field можно указать индекс поля (число), имя поля или полное имя поля (вида: «имя_таблицы.имя_поля») или псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...').
При работе с большими наборами записей быстрее выполняются функции типа _fetch_ (см. ниже). Также заметьте, что численные индексы обрабатываются быстрее строковых.
Не следует вызывать функцию mysql_result() в сочетании с другими функциями обработки набора записей.
Рекомендуется использовать альтернативные функции: mysql_fetch_ row(), mysql_fetch_array() и mysql_fetch_object().
mysql_fetch array
Занесение записи в массив
array mysql_fetch_array (int result [, int result_type])
Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом, или FALSE, если записей более не имеется.
Данная функция является расширением функции mysql_fetch_row(), и она может возвращать нумерованный или ассоциативный массив (а также объединенный). Вид возвращаемого массива может указываться в аргументе result_type одной из констант: MYSQL NUM, MYSQL_ ASSOC, MYSQL_BOTH (по умолчанию).
В ассоциативных массивах индексами служат имена нолей. Если имеются одноименные поля, используется последнее. Для доступа к одноименным полям также можно использовать числовые индексы (поля нумеруются в той последовательности, в которой указаны в запросе или в таблице) или псевдонимы.
SELECT tl.fl AS tl_fl t2.fi AS t2_fl FROM tl. t2
Заметьте, что функция работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет дополнительную функциональность.
<?php
mysql_connect (Shost. $use<\ Spassword).
Sresult = mysql_db_query ("database".
"select user_id. full name from tbl");
while ($row = mysql_fetch_array (Sresult))
{ echo "userjid- ".$row["user_id"].
"<brn". echo "user_id: ".$row[0] "<br>\n";
echo "fullname: ",$row["fullnatne"]."<br>\n";
echo "fullname: ".$row[l]."<br>\n"; }
mysql_free_result (Sresult). ?>
См. также: mysql_fetch_row() и mysql_fetch_assoc().
mysql_fetch_row
Занесение записи в нумерованный массив
array mysql_fetch_row (int result)
Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом (последующий вызов функции возвращает следующую запись), или FALSE, если записей более не имеется.
Каждое поле записи сохраняется в нумерованном элементе массива (нумерация начинается с 0).
См. также: mysql_fetch_array(), mysql_fetch_object(), mysql_data_seek(), mysql_fetch_lengths() и mysql_result().
mysql_fetch_assoc
Занесение записи в ассоциативный массив
array mysql_fetch_assoc (int result)
Возвращает массив, соответствующий текущей записи, из набора записей result, возвращенных запросом, или FALSE, если записей более не имеется. Вызов функции эквивалентен mysql_fetch_array (result, MYSQL_ASSOC).
В возвращаемом массиве индексами служат имена полей. Если имеются одноименные поля, используется последнее. Для доступа к остальным одноименным полям можно использовать псевдонимы или функцию raysql_fetch_array().
Заметьте, что функция работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет дополнительную функциональность.
<?php
mysql_connect ($host. $user. Spassword):
$result = mysql_db_query
("database"."select * from table").
while ($row = mysql_fetch_assoc
(Sresult)) { echo $row["user_id"];
echo $ro\4' fullname"] }
mysql_free_result (Sresult); ?>
CM. также: mysql_fetch_row() и mysql_fetch_array().
mysql_fetch_object
Получение записи в свойствах объекта object mysql_fetch_object (int result)
Возвращает объект, в свойствах которого находятся поля текущей записи, или FALSE, если записей более не имеется.
По скорости выполнения функция идентична mysql_fetch_array() и почти идентична mysql_fetch_row().
<?php
mysql_connect ($host. $user. $password).
Sresult = mysql_db_query
("database", "select * from table"):
while ($row = mysql_fetch_object
(Sresult)) {
echo $row->user_id.
echo $row->fullname: }
mysql_free_result (Sresult): ?>
См. также: mysql_fetch_array() и mysql_fetch_row().
ImysqI_fetch_lengths
Получение длины элементов записи array mysql_fetch_lengths (int result) После того как запись была обработана одной из функций: mysql_ fetch_row(), mysql_fetch_array() или mysql_fetch_object(), с помощью данной функции можно узнать размер полученного значения в каждом обработанном поле.
Например, в следующем фрагменте:
Srs_arr = mysql_fetch_row($rs):
S'-sJen - mysql_fetch_lengths($rs).
массив $rs_len будет содержать длину соответствующих элементов массива $rs_arr, то есть $rsjen[0] = strlen($rs_arr[0]) и т. д.
См. также mysql_fetch_row().
mysql_fetch_field
Получение информации о поле записи в свойствах объекта
object mysql_fetch_field (Int result [, int field_offset])
Если номер поля field_offset не указан, при каждом вызове функции возвращаются свойства следующего поля из набора записей result.
Возвращаемый объект имеет следующие свойства (и содержит информацию):

  • name — имя поля;
  • table — имя таблицы, которой принадлежит поле;
  • raax_length — максимальная длина поля;
  • not_null — 1, если полю разрешено пустое значение;
  • primary_key — 1, если поле является ключевым (primary key);
  • unique_key — , если в ноле допускаются только уникальные значения (unique key);
  • multiple_key — 1, если в поле допустимо иметь повторяющиеся значения;
  • numeric — 1, если поле числовое;
  • blob — 1, если поле имеет тип BLOB;
  • type — чип поля;
  • unsigned — 1, если поле числовое беззнаковое;
  • zerofill — 1, если поле заполняется нулями (zero-filled).

<?php /
mysql_connect (Shost. $user. Spassword)
or die ("Could not connect"):
\ $result = mysql_db_query
("database", "select * from table")
or die ("Query failed"): \ \
for($i =0: $1 < mysqljium_fields
(Sresult): $i++)
{ echo "Метаданные поля $i:<BR>\n":
$meta = mysql_fetch_field
(Sresult): if (!$meta) { echo
"No information available<BR>\n";
echo "<PRE> name $meta->
name table- $meta->table
type: $meta->type
roax_length: $meta->
max_length notjiull
$meta->not_pull
zerofill. $meta->zerof ill
umque_key. $meta->umque_key
pnmary_key: $meta->prTinary_key
|4ultiple_key $meta->multiple_key
numeric $meta->numeric
unsigned $meta->unsigned
blob $meta->blob </PRE>". }
mysql_free_result (Sresult): ?>
См. также mysql_field_seek().
mysql_field_seek
Перемещение к указанному полю
int mysql_field_seek (int result, int field_offset)
Функция является излишней, и следующие фрагменты эквивалентны:
$meta = mysql_fetch_field
(Sresult. field_offset): и mysql_fTeld_seek
(Sresult. field_offset)
imeta - mysql_fetch_field ($result).
Эта функция влияет только на mysql_fetch_field(), а остальные функции этого рода (см. ниже) требуют явного указания номера поля.
См. также mysql_fetch_field().
mysql_field_name
Получение имени поля в наборе записей
string mysql_field_name (int result, int fie!d_index)
Функция возвращает имя поля с индексом field_offset (нумерация начинается с 0) в наборе записей result.
$res = !nysql_db_query
( "users", "SELECT user_id. user-name
FROM users"):
echo mysql_field_name($res. !)
// выведет username
Ранее функция называлась mysql_fieldname().
mysql_field_table
Получение имени таблицы, которой принадлежит поле из набора записей string mysql_field_table (int result, int field_offset) Ранее функция называлась mysqljfieldtable().
mysql_field_len
Получение размера поля набора записей
int mysql_field_len (int result, int field_offset)
Ранее функция называлась mysql_fieldlen().
mysql_field_type
Получение типа поля набора записей
string mysql _field_type (int result, int field_offset) Возвращаемая строка содержит название типа ноля: «int», «real», «string», «blob» или другого, описанного в документации по MySQL.
<?php
mysql_ccnnect (" local host.3306").
mysql_select_db ("mydbl"):
$result = mysql_query ("SELECT * FROM tbll");
Sfields = mysql_num_fields (Sresult):
Srows mysql nurn_rows ($result);
Si = 0;
Stable = mysql_field_table
(Sresult. $1).
echo "Таблица 'Stable' имеет
Sfields полей и Srows записей<ВК>":
echo "Структура таблицы: <BR>":
while ($1 < Sfields) {
Stype = mysql_field_type
(Sresult. Si):
$name = mysql_field_name
(Sresult. Si):
Slen = mysql_field_len
(Sresult. Si):
Sflags - mysql_field_flags
(Sresult. Si):
echo Stype." ".$name." ".Slen."
".Sflags."
<BR>": Si++: mysql_close(): ?>
Ранее функция называлась mysql_fieldtype().
mysql_field_flags
Получение флагов поля записи
string mysql_field_flags (int result, int field_offset)
Поля записей в MySQL могут иметь следующие свойства-флаги: "notjiull", "pr1mary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".
Функция возвращает перечисление через пробел флагов, имеющихся у поля с индексом field_offset (нумерация начинается с 0) в наборе записей result (разделить полученную строку на составляющие можно функцией exptode()).
Ранее функция называлась mysql_fieldflags().
mysql_list_fields
Получение списка полей таблицы
int mysql_list_fields (string database_name, string table_name [, int linkjidentifier])
Функция возвращает пустой набор записей таблицы table_name из БД database_name, который можно использовать для получения информации о всех полях, имеющихся в таблице, с помощью функций
mysql_fetch_field(), mysql_field_flags(), mysql_fieldjen(), mysql_field_ name() и mysql_field_type().
Заметьте: при ошибке возвращается -1, а в переменной Sphperrmsg сохраняется сообщение об ошибке и (если функция не была вызвана с оператором @) распечатывается сообщение об ошибке.
$link = mysql_cornect
('localhost'. 'myname'. 'secret');
Sfields = mysql_list_fields
("databasel", "tablel", $link):
Scolumns = mysql_num_fields($fields);
// число полей в таблице
// распечатать имена всех полей
таблицы for ($1 = 0: $1 < Scolumns; $i++)
{
echo mysql_field_name
($fields. $1) . "\n".; }
Ранее функция называлась mysql_listfields().
mysql_num_fields
Получение числа полей в наборе записей
int mysq"ljium_fields (int result)
См. также: mysql_db_query(), mysql_query(), mysql_fetch_field(), mysql_ num_rows().
Ранее функция называлась mysqljiumfields().
mysql_errno
Получение кода ошибки MySQL
int mysql_errno ([int link_identifier])
Возвращает номер ошибки, произошедшей в ходе выполнения последней функции MySQL, или 0, если ошибки не произошло.
Ранее ошибки, происходящие при операциях с MySQL, выдавались в виде предупреждений, но сейчас возникновение ошибок нужно выявлять самостоятельно.
Предупреждения выводятся только при неудачных подключениях или при попытке использования несуществующего ресурса (например, набора записей).
<?php
mysql_connect();
mysql_select_db("non_exi stent_db"):
echo mysql_errno().":
".mysql_error()."<BR>"
mysql_query("SELECT *
FROM non_existent_table"):
echo mysql_errno() ";
".mysql_error().
"<BR>"; ?>
См. также mysql_error().
mysql_error
Получение сообщения об ошибке MySQL
string mysql_error ([int link_identifier])
Возвращает сообщение об ошибке, произошедшей в ходе выполнения последней функции MySQL, или пустую строку, если ошибки не произошло.
<?php
mysql_ccnnect().
mysql_select_db("non_existent_db");
echo mysql_errno().":
" mysql_error() "<BR>".
$conn = mysql_query("SELECT *
FROM non_exibtent_table");
echo mysql_errno() ": ",mysql_error()
"<BR>"; ?>
См. также mysql_errno().

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г. Яндекс.Метрика