mysql_connect

Устанавливает сетевое соединение с базой данных MySQL.

Синтаксис:

int mysql_connect([string $hostname[:port][:/path/to/socket][, [,string $username [,string $password]]])

Функция mysql_connect() устанавливает сетевое соединение с базой данных MySQL,
расположенной на хосте $hostname, и возвращает идентификатор открытого соединения. Вся дальнейшая работа ведется именно с этим идентификатором. При регистрации указывается имя пользователя $username и пароль $password. Строка $hostname также может включать в себя номер порта в виде "hostname:port" или путь к сокету для локальной машины в системах Unix - ":/path/to/socket" (если сервер MySQL настроен не на стандартный, а на какой-то другой порт).

При ошибке выдается предупреждение. Выдачу сообщения об ошибке можно блокировать, указав перед именем функции оператор "@".

При следующем запуске функции с теми же самыми аргументами второе соединение не будет открыто, а функция возвратит идентификатор уже существующего.
В конце сценария обычно принято закрывать подключения функцией mysql_close(), но этого можно не делать, т.к. PHP автоматически закрывает все (неустойчивые) подключения при завершении сценария.

<?php
$conn = mysql_connect ("localhost", "username", "pass")
or die ("Соединение не установлено!");
print ("Соединение установлено!");
mysql_close($conn);
?>

mysql_list_tables

Возвращает список таблиц в БД.
Синтаксис:

int mysql_list_tables(string database [,int link_identifier])

Функция возвращает идентификатор результата (одна колонка), в котором содержаться имена всех таблиц, присутствующих в базе данных. Для извлечения этих имен можно использовать функцию mysql_result()
с номером колонки, равным 0, иди функцию mysql_tablename().

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

$db=mysql_connect("localhost", "user_name", "");
$db_list=mysql_list_dbs($db);
while($r_db=mysql_fetch_object($db_list)) {
echo $r_db->Database."n";
// распечатать список таблиц
$t_list=mysql_list_tables($r_db->Database);
for($i=0;$i<mysql_num_rows($t_list);$i++) {
echo " - ".mysql_tablename($t_list,$i)."n";
}
}

mysql_tablename

Возвращает имя таблицы в БД.
Синтаксис:

int mysql_tablename(int result, int i)

Функция возвращает имя таблицы с номером i из набора записей, полученных при помощи функции mysql_list_tables().

$db=mysql_connect("localhost", "user_name", "");
$result=mysql_list_tables("db_name");
$i=0;
while($i<mysql_num_rows($result)) {
$t_name[$i]=mysql_tablename($result, $i);
echo $t_name[$i]."<BR>";
$i++;
}

mysql_query

Посылает запрос базе данных MySQL.

Синтаксис:

int mysql_query(string query [,int link_identifier])

Эта функция посылает запрос query базе данных, связанной с идентификатором link_identifier. Если идентификатор не указан, то принимается во внимание последнее открытое соединение. Если до этого соединение небыло установлено, то выполняется операция mysql_connect() с параметрами по умолчанию.
SQL-выражение, указанное в параметре query, не должно оканчиваться ";".

Если выражение содержит ошибки, или его выполнение приводит к ошибкам, то функция mysql_query()
возвращает false.
В результате успешно выполненного запроса возвращается набор записей, который можно обработать следующими функциями:

mysql_result() - получить элемент набора записей
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.

Синтаксис:
int mysql_db_query(string database, string query [,int link_identifier])
Эта функция эквивалентна следующей последовательности функций:

mysql_select_db(string database [, int link_identifier]);
mysql_query(string query [, int link_identifier]);

mysql_num_rows

Возвращает количество строк в результате запроса.
Синтаксис:

int mysql_num_rows(int result)

Эта функция возвращает число записей, найденных в результате выполнения SQL-команды SELECT
(поиск по базе данных).

<?php$link = mysql_connect("localhost", "username", "password"); 
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);

echo "Получено строк: $num_rowsn";
?>

mysql_affected_rows

Возвращает количество измененных записей в БД MySQL.

Синтаксис:

int mysql_affected_rows([int link_identifier]);

Функция mysql_affected_rows() возвращает количество записей, которые были изменены в базе данных в результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE.

Если последним запросом была команда DELETE без ограничения WHERE (т.е. из таблицы были удалены все записи),
то наша функция возвратит 0.

mysql_insert_id

Получает вставленный идентификатор.
Синтаксис:

int mysql_insert_id([int $link_identifier])

Функция возвращает непосредственно перед ее вызовом сгенерированный идентификатор записи для автоинкрементного поля после выполнения команды insert. Вызывать ее разумно только сразу после выполнения инструкции insert, например, в таком контексте:

mysql_query("insert into Таблица(поле 1, поле 2) values("aa","bb")");
$id=mysql_insert_id();

Теперь к только что вставленной записи можно обратиться, используя идентификатор $id:

$r=mysql_query("select * from Таблица where id=$id");
$Row=mysql_fetch_array($r);

mysql_data_seek

Устанавливает указатель текущей строки.
Синтаксис:

int mysql_data_seek(int result, int row_number)

Эта функция устанавливает указатель текущей строки в результате result в позицию row_number, так что следующий вызов mysql_fetch_row() и mysql_fetch_array() вернет значения полей именно этой строки.
Нумерация записей ведется с 0.

Возвращает false в случае ошибки или если строки кончились.

mysql_free_result

Уничтожает набор записей.
Синтаксис:

int mysql_free_result(int result)

Данная функция освобождает память, занимаемую набором записей result, возвращенным запросом.
Эта функция необходима, когда нужно экономить память, т.к. PHP автоматически освобождает память при завершении сценария.

mysql_client_encoding()

Возвращает кодировку соединения (PHP 4 >= 4.3.0, PHP 5)

Описание:

string mysql_client_encoding ( [resource link_identifier] )

mysql_client_encoding() возвращает название кодировки, с которой работет текущее соединения.

Пример использования mysql_client_encoding()

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$charset = mysql_client_encoding($link);
printf ("current character set is %s\n", $charset);
?>

Вышеописанный пример выдаст следующий результат:

current character set is latin1

mysql_pconnect

Устанавливает устойчивое сетевое соединение с базой данных MySQL.

Синтаксис:

int mysql_pconnect([string $hostname[:port][:/path/to/socket][, [,string $username [,string $password]]])

Функция mysql_pconnect() устанавливает устойчивое сетевое соединение с базой данных MySQL,
расположенной на хосте $hostname, и возвращает идентификатор открытого соединения. Вся дальнейшая работа ведется именно с этим идентификатором. При регистрации указывается имя пользователя $username и пароль $password. Строка $hostname также может включать в себя номер порта в виде "hostname:port"или путь к сокету для локальной машины в системах Unix - ":/path/to/socket" (если сервер MySQL настроен не на стандартный, а на какой-то другой порт).

При ошибке выдается предупреждение. Выдачу сообщения об ошибке можно блокировать, указав перед именем функции оператор "@".

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

mysql_get_client_info()

Возвращает данные о MySQL-клиенте (PHP 4 >= 4.0.5, PHP 5)

Описание:

string mysql_get_client_info ( void )

mysql_get_client_info() возвращает строку, содержащую версию клиентской библиотеки.

Пример использования mysql_get_client_info()

<?php
printf ("MySQL client info: %s\n", mysql_get_client_info());
?>

Вышеописанный пример выдаст следующий результат:

MySQL client info: 3.23.39

mysql_get_host_info()

Возвращает информацию о соединении с MySQL (PHP 4 >= 4.0.5, PHP 5)

Описание:

string mysql_get_host_info ( [resource link_identifier] )

mysql_get_host_info() возвращает строку, описывающую соединение, на которое ссылается переданный указатель link_identifier, включая имя хоста. Если параметр link_identifier опущен, будет использовано последнее соединение.

Пример использования mysql_get_host_info()

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
printf ("MySQL host info: %s\n", mysql_get_host_info());
?>

Вышеописанный пример выдаст следующий результат:

MySQL host info: Localhost via UNIX socket

mysql_get_proto_info()

Возвращает информацию о протоколе MySQL (PHP 4 >= 4.0.5, PHP 5)

Описание:

int mysql_get_proto_info ( [resource link_identifier] )

mysql_get_proto_info() возвращает версию протокола, используемую соединением, на которое ссылается указатель link_identifier. Если параметр link_identifier опущен, используется последнее открытое соединение.

Пример использования mysql_get_proto_info()

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
printf ("MySQL protocol version: %s\n", mysql_get_proto_info());
?>

Вышеописанный пример выдаст следующий результат:

MySQL protocol version: 10

mysql_get_server_info()

Возвращает информацию о сервере MySQL (PHP 4 >= 4.0.5, PHP 5)

Описание:

string mysql_get_server_info ( [resource link_identifier] )

mysql_get_server_info() возвращает версию сервера, на соединение с которым ссылается переданный функции указатель link_identifier. Если параметр link_identifier опущен, будет использовано последнее открытое соединение.

Пример использования mysql_get_server_info()

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
printf ("MySQL server version: %s\n", mysql_get_server_info());
?>

Вышеописанный пример выдаст следующий результат:

MySQL server version: 4.0.1-alpha

mysql_info()

Возвращает информацию о последнем запросе (PHP 4 >= 4.3.0, PHP 5)

Описание:

string mysql_info ( [resource link_identifier] )

mysql_info() возвращает детальную информацию о последнем запросе к серверу, на который ссылается переданный функции указатель link_identifier. Если параметр link_identifier не указан, используется последнее открытое соединение.

mysql_info() возвращает строку для всех описанных ниже запросов. Для всего остального она возвращает FALSE. Формат строки зависит от вида запроса.

Пример. Релевантные MySQL утверждения, возвращающие строковые значения.

INSERT INTO ... SELECT ...
String format: Records: 23 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...),(...)...
String format: Records: 37 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...
String format: Records: 42 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE
String format: Records: 60 Duplicates: 0 Warnings: 0
UPDATE
String format: Rows matched: 65 Changed: 65 Warnings: 0

Числа расставлены только для примера -- их значения зависят от результата запроса.

Замечание: mysql_info() возвращает значение не равное FALSE для INSERT ... VALUES только в том, случае, если в запросе присутствует несколько списков значений.

mysql_stat()

Возвращает текущий статус сервера (PHP 4 >= 4.3.0, PHP 5)

Описание:

string mysql_stat ( [resource link_identifier] )

mysql_stat() возвращает текущий статус сервера.

Замечание: mysql_stat() возвращает только время работы, количество потоков, запросов, открытых таблиц и количество запросов в секунду. Для полного списка переменных статуса, используйте SQL-запрос SHOW STATUS.

Пример использования mysql_stat()

<?php
$link = mysql_connect('localhost', "mysql_user", "mysql_password");
$status = explode(' ', mysql_stat($link));
print_r($status);
?>

Вышеописанный пример приведёт к следующему результату:

Array
(
[0] => Uptime: 5380
[1] => Threads: 2
[2] => Questions: 1321299
[3] => Slow queries: 0
[4] => Opens: 26
[5] => Flush tables: 1
[6] => Open tables: 17
[7] => Queries per second avg: 245.595
)

mysql_thread_id()

Возвращает ID текущего потока (PHP 4 >= 4.3.0, PHP 5)

Описание:

int mysql_thread_id ( [resource link_identifier] )

mysql_thread_id() возвращает ID текущего соединения. Если соединение потеряно и вы пересоединились с помощью mysql_ping(), ID изменится. Это означает, что вам не следует получать ID и хранить его для дальнейщего использования. Вызывайте функцию тогда, когда ID вам нужен.

Пример использования mysql_thread_id()

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$thread_id = mysql_thread_id($link);
if ($thread_id){
printf ("current thread id is %d\n", $thread_id);
}
?>

Вышеописанный пример выдаст следующий результат:

current thread id is 73

mysql_ping()

Проверяет соединение с сервером и пересоединяется при необходимости (PHP 4 >= 4.3.0, PHP 5)

Описание:

bool mysql_ping ( [resource link_identifier] )

mysql_ping() проверяет соединение с сервером. Если оно утеряно, автоматически предпринимается попытка пересоединения. Эта функция может быть использована в скриптах, работающих на протяжении долгого времени. mysql_ping() возвращает TRUE, если соединение в рабочем состоянии и FALSE в противном случае.

mysql_escape_string()

Экранирует SQL спец-символы для mysql_query (PHP 4 >= 4.0.3, PHP 5)

Описание:

string mysql_escape_string ( string unescaped_string )

Функция экранирует все спец-символы в unescaped_string, вследствие чего, её можно безопасно использовать в mysql_query().

Замечание: mysql_escape_string() не экраинрует % и _.

Функция идентична mysql_real_escape_string(), исключая то, что mysql_real_escape_string() принимает параметром ещё и указатель на соединение и экранирует в зависимости от кодировки. mysql_escape_string() не делает этого и результат работы не зависит от кодировки, в который вы работаете с БД.

Пример использования mysql_escape_string()

<?php
$item = "Zak's Laptop";
$escaped_item = mysql_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>

Вышеописанный пример выдаст следующий результат:

Escaped string: Zak\'s Laptop

mysql_real_escape_string()

Экранирует специальные символы в строках для использования в выражениях SQL (PHP 4 >= 4.3.0, PHP 5)

Описание:

string mysql_real_escape_string ( string unescaped_string [, resource link_identifier] )

Экранирует специальные символы в unescaped_string, принимая во внимание кодировку соединения, таким образом, что результат можно безопасно использовать в SQL-запросе в функци mysql_query(). Если вставляются бинарные данные, то к ним так же необходимо применять эту функцию.

mysql_real_escape_string() вызывает библиотечную функцмю MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \x00, \n, \r, \, ', " and \x1a.

Эта функция должна всегда (за несколькими исключениями) использоваться для того, чтобы обезопасить данные, вставляемые в запрос перед отправкой его в MySQL.

Список параметров

unescaped_string - Строка, которая должна быть экранирована.
link_identifier - Соединение MySQL. Если идентификатор соединения не указан, принимается идентификатор последнего соединения mysql_connect(). Если такое соединение не найдено, будет осуществлена попытка соединения, как если бы была вызвана mysql_connect() без аргументов. Если ни одного соединения не найдено и не установлено, будет сгенерировано предупреждение уровня E_WARNING.

Возвращает строку, в которой экранированы все необходимые символы, или FALSE в случае ошибки.

Примеры

Простой пример использования mysql_real_escape_string()

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
?>

Пример взлома с использованием SQL Injection

<?php
// посылаем запрос, чтобы проверить имя и пароль пользователя
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// Мы проверили переменную $_POST['password'],
// а она может содержать совсем не то, что мы ожидали. Например:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// посмотрим, какой запрос будет отправлен в MySQL:
echo $query;
?>

Запрос, который будет отправлен в MySQL:

SELECT * FROM users WHERE name='aidan' AND password='' OR ''=''

Это позволит кому угодно войти в систему без пароля.

Лучший вариант составления запроса

Применение mysql_real_escape_string() к каждой переменной, вставляемой в запрос, предотвращает SQL Injection. Нижеследующий код является наилучшим вариантом составления запросов и не зависит от установки Magic Quotes.

<?php
// Функция экранирования переменных
function quote_smart($value)
{
// если magic_quotes_gpc включена - используем stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Если переменная - число, то экранировать её не нужно
// если нет - то окружем её кавычками, и экранируем
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}

// Соединяемся
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

// Составляем безопасный запрос
$query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
quote_smart($_POST['username']),
quote_smart($_POST['password']));

mysql_query($query);
?>

Запрос, составленный таким образом, будет выполнен без ошибок, и взлом с помощью SQL Injection окажется невозможен.

Примечания

Функцию mysql_real_escape_string() можно использовать только после того, как установлено соединение с MySQL. В противном случае возникнет ошибка уровня E_WARNING, а функция возвратит FALSE. Если link_identifier не указан, используется последнее открытое соединение.

Если magic_quotes_gpc включены, то сначала данные следует обработать функцией stripslashes(). Если mysql_real_escape_string() применяется к данным, которые уже были прослешены, то в результате слеши в данных будут удваиваться.

Если не пользоваться этой функцией, то запрос становится уязвимым для взлома с помощью SQL Injection.

mysql_real_escape_string() не экранирует символы % и _. Эти знаки являются масками групп символов в операторах MySQL LIKE, GRANT или REVOKE.

mysql_close

Закрывает установленное ранее соединение с базой данных.
Синтаксис:

int mysql_close ([int link_identifier])

Закрывает соединение с MySQL-сервером с идентификатором link_identifier, или последнее открытое соединение, если используется без идентификатора.
Возвращает true при удачном закрытии или false при ошибке.
Использование этой функции не обязательно, т.к. PHP автоматически закрывает все неустойчивые подключения при завершении работы сценария.
Подключения, установленные функцией mysql_pconnect(), не закрываются.

<?php
$conn = mysql_connect ("localhost", "username", "pass")
or die ("Соединение не установлено!");
print ("Соединение установлено!");
mysql_close($conn);
?>

mysql_unbuffered_query()

Посылает MySQL SQL-запрос без авто-обработки результата и её буфферизации (PHP 4 >= 4.0.6, PHP 5)

Описание:

resource mysql_unbuffered_query ( string query [, resource link_identifier] )

mysql_unbuffered_query() посылает MySQL SQL-запрос query без автоматической обработки и буфферизации её результата, в отличе от функции mysql_query(). Это позволяет сохранить достаточно большое количество памяти для SQL-запросов, возвращающих большое количество данных. Кроме того, вы можете начать работу с полученными данными сразу после того, как первый ряд был получен: вам не приходится ждать до конца SQL-запроса. При использовании нескольких соединений с MySQL, вы можете указать опциональный параметр link_identifier.

Однако, плюсы использования mysql_unbuffered_query() имеют свою цену: вы не можете использовать функции mysql_num_rows() и mysql_data_seek() с результатом запроса, возвращённым этой функцией. Кроме того, вы должны будете обработать все ряды запроса до отправки нового запроса.

mysql_change_user

Изменяет параметры подключения.
Синтаксис:

int mysql_change_user(string user, string password [, string database [, int link_identifier]])

Если не указывается БД или подключение, то используется последняя активная БД.
Если авторизация не произошла, то параметры подключения не изменяются.
Работает с MySQL 3.23.3 и выше.

mysql_list_dbs

Возвращает список БД на сервере.
Синтаксис:

int mysql_list_dbs([int link_identifier])

Возвращает набор записей, содержащий список БД на сервере.

$bd=mysql_connect("localhost", "name", "pass");
$bd_list=mysql_list_dbs($bd);
while($row=mysql_fetch_object($bd_list)) {
echo $row->Database."n";
}

Надо отметить, что список баз данных можно получить не имея привелегий, т.е. не указывая пароль доступа

mysql_db_name

Возвращает имя базы данных из списка.
Синтаксис:

int mysql_db_name(int result, int row [, mixed field])

Параметр result задает дескриптор набора записей, полученных при помощи функции mysql_list_dbs().
Аргумент row указывает номер записи.
В случае ошибки данная функция возвращает false.

mysql_connect("localhost", "username", "pass");
$db_list=mysql_list_dbs();
for($i=0;$i<($cnt=mysql_num_rows($db_list));$i++) {
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 при ошибке.
Если Вы планируете открывать только одно соединение с базой данных за все время работы сценария, то можете не сохранять возвращенное значение, а также не указывать идентификатор при вызове всех остальных функций.
До того как послать первый запрос серверу MySQL, необходимо указать, с какой базой данных мы собираемся работать.
Для этого и предназначена данная функция. Она уведомляет, что в дальнейших операциях с соединением link_identifier (или с последним открытым соединением, если указанный параметр не задан) будет использоваться база данных database_name.
Если на момент вызова данной функции подключений к базе данных нет, то косвенно вызывается функция mysql_connect()
с параметрами по умолчанию.

mysql_create_db

Создание базы данных MySQL.

Синтаксис:

int mysql_create_db(string dbname [, int link_identifier]) 

Эта функция создает новую базу данных MySQL с именем dbname, используя подключение link_identifier.

$db=mysql_connect("localhost", "name", "pass");
if(mysql_create_db("my_db_name")) {
echo "БД my_db_name создана");
} else {
echo "Ошибка создания БД: %sn".mysql_error());
}

mysql_drop_db

Удаление базы данных MySQL.

Синтаксис:

int mysql_drop_db(string database_name [, int link_identifier])

Функция mysql_drop_db() удаляет базу данных database_name, доступную в подключении link_identifier.
В случае успешного удаления возвращает true, при ошибке - false.

mysql_result

Получение определенного поля результата.
Синтаксис:

int mysql_result(int result, int row [, mixed field])

Функция возвращает значение поля field в строке результата с номером row. Параметр field может задавать не только имя поля, но и его номер - позицию, на которой столбец "стоял" при создании таблицы, а также полное имя поля вида: "имя_таблицы.имя_поля".
Тем не менее, рекомендуется везде, где это только возможно,использовать именно имена полей.
Функция универсальна: с ее помощью можно "обойти" весь результат по одной ячейке. И хотя это не возбраняется, но делать, однако, не рекомендуется, т.к. mysql_result() работает довольно медленно.

mysql_field_len

Возвращает длину поля.
Синтаксис:

int mysql_field_len(int result, int filed_offset)

Функция возвращает длину поля в результате result. Поле, как обычно, задается указанием его смещения. Под длиной здесь подразумевается не размер данных поля в байтах, а тот размер, который был указан при его создании. Например, если поле имеет тип varchar и было создано (вместе с таблицей) с типом varchar(100), то для него будет возвращено 100.

mysql_field_type

Возвращает тип набора записей в результате.
Синтаксис:

string mysql_field_type(int result, int filed_offset)

Эта функция похожа на mysql_filed_name(), только возвращает не имя , а тип соответствующей колонки в результате. Им может быть, например, int, double, real и т.д.

mysql_connect($host,$user,$pass);
mysql_select_db("mydb");
$result=mysql_query("SELECT * FROM tabl");
$fields=mysql_num_fields($result);
$rows=mysql_num_rows($result);
$i=0;
$table=mysql_field_table($result,$i);
echo "Таблица "$table" имеет $fields полей и $rows записей<BR>";
echo "Структура таблицы:<BR>";
while($i<$fields) {
$type=mysql_field_type($result,$i);
$name=mysql_field_name($result,$i);
$len=mysql_field_len($result,$i);
$flags=mysql_field_flags($result,$i);
echo $type." ".$name." ".$len." ".$flags."<BR>";
$i++;
}

mysql_field_flags

Эта функция возвращает флаги, которые были использованы при создании указанного поля в таблице.
Синтаксис:

string mysql_field_flags(int result, int field_offset) 

Возвращаемая строка представляет собой набор слов, разделенных пробелами, так что вы можете преобразовать ее в массив при помощи функции explode():

$Flags=explode(" ",mysql_field_flags($r,$field_offset));

Поля записей в MySQL могут иметь следующие свойства-флаги:

"not_nul"
"primary_key"
"unique_key"
"multiple_key"
"blob"
"unsigned"
"zerofill"
"binary"
"enum"
"auto_increment"
"timestamp"

mysql_list_fields

Возвращает список полей таблицы.
Синтаксис:

int mysql_list_fields(string dbname, string tblname [,int link_identifier])

Функция mysql_list_fields() возвращает информацию об указанной таблице tblname в базе данных bdname, используя идентификатор соединения link_identifier, если он задан (в противном случае - последнее открытое соединение). Возвращаемое значение - идентификатор результата, который может быть проанализирован обычными средствами. В случае ошибки возвращается -1, текст сообщения ошибки может быть получен обычным способом.

$link=mysql_connect($host,$user,$pass);
$fields=mysql_list_fields("db1", "table", $link);
$colums=mysql_num_fields($fields); // число полей в таблице
// Далее распечатаем имена всех полей таблицыfor($i=0;$i<$colums;$i++) {
echo mysql_field_name($fields,$i)."<BR>";
}

mysql_num_fields

Эта функция возвращает число полей в одной строке результата, т.е. число колонок в результате.
Синтаксис:

int mysql_num_fields(int result)

В силу сказанного, функция позволяет определить горизонтальную размерность "двумерного массива результата".

mysql_errno

Возвращает номер последней ошибки.
Синтаксис:

int mysql_errno ([int link_identifier])

Данная функция возвращает номер последней зарегистрированной ошибки или 0, если ошибок нет.
Идентификатор link_identifier можно не указывать, если за время работы сценария было установлено только одно соединение.

mysql_connect("dbname");
echo mysql_errno().": ".mysql_error()."<BR>";

mysql_error

Возвращает сообщение об ошибке.
Синтаксис:

string mysql_error ([int link_identifier])

Эта функция возвращает строку, содержащую текст сообщения об ошибке или пустую строку, если ошибок небыло.

mysql_connect("dbname");
echo mysql_errno().": ".mysql_error()."<BR>";

mysql_list_processes()

Возвращает список процессов MySQL (PHP 4 >= 4.3.0, PHP 5)

Описание:

resource mysql_list_processes ( [resource link_identifier] )

mysql_list_processes() возвращает указатель на результат, содержащий в себе текущие, выполняемые сервером, процессы.

Пример использования mysql_list_processes()

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

$result = mysql_list_processes($link);
while ($row = mysql_fetch_assoc($result)){
printf("%s %s %s %s %s\n", $row["Id"], $row["Host"], $row["db"],
$row["Command"], $row["Time"]);
}
mysql_free_result ($result);
?>

Вышеописанный пример выдаст следующий результат:

1 localhost test Processlist 0
4 localhost mysql sleep 5

mysql_fetch_assoc()

Обрабатывает ряд результата запроса и возвращает ассоциативный массив (PHP 4 >= 4.0.3, PHP 5)

Описание:

array mysql_fetch_assoc ( resource result )

Возвращает ассоциативный массив с названиями индексов, соответсвующими названиям колонок или FALSE если рядов больше нет.

Функция mysql_fetch_assoc() аналогична вызову функции mysql_fetch_array() со вторым параметром, равным MYSQL_ASSOC. Функция возвращает только ассоциативный массив. Если вам нужны как ассоциативные, так и численные индексы в массиве, обратитесь к функции mysql_fetch_array().

Если несколько колонок в запросе имеют одинаковые имена, значение ключа массива с индексом названия колонок будет равно значению последней из колонок. Чтобы работать с первыми, используйте функции, возвращающие не ассоциативный массив: mysql_fetch_row(), либо используйте алиасы. Смотрите пример использования алиасов в SQL в описании функции mysql_fetch_array().

Важно заметить, что mysql_fetch_assoc() работает НЕ медленнее, чем mysql_fetch_row(), предоставляя более удобный доступ к данным.

Замечание: Имена полей, возвращаемые этой функцией, регистро-зависимы.

Расширенный пример использования mysql_fetch_assoc()

<?php

$conn = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}

if (!mysql_select_db("mydbname")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}

$sql = "SELECT id as userid, fullname, userstatus
FROM sometable
WHERE userstatus = 1";

$result = mysql_query($sql);

if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}

// До тех пор, пока в результате содержатся ряды, помещаем их в
// ассоциативный массив.
// Заметка: если запрос возвращает только один ряд -- нет нужды в цикле.
// Заметка: если вы добавите extract($row); в начало цикла, вы сделаете
// доступными переменные $userid, $fullname, $userstatus.
while ($row = mysql_fetch_assoc($result)) {
echo $row["userid"];
echo $row["fullname"];
echo $row["userstatus"];
}

mysql_free_result($result);

?>

mysql_fetch_array

Извлекает из результата очередную запись и помещает ее в ассоциативный массив.
Синтаксис:

array mysql_fetch_array(int result [, int result_type])

Функция mysql_fetch_array() возвращает очередную строку результата в виде ассоциативного массива, где каждому полю сопоставлен элемент с ключом, совпадающим с именем поля. Дополнительно в массив записываются элементы с числовыми ключами и значениями, соответствующими величинам полей с этими индексами. В возвращаемом массиве они размещаются сразу за элементами с "обычными" ключами.
Параметр result_type задает вид возвращаемого массива и может принимать одно из следующих значений: MYSQL_NUM, MYSQL_ASSOC, MYSQL_BOTH (по умолчанию).

Может возникнуть вопрос: зачем вообще нужны числовые индексы. Ответ прост: дело в том, что в результате выборки в действительности могут присутствовать поля (фактически, колонки) с одинаковыми именами, но, соответственно, с различными индексами. Это происходит тогда, когда выборка в SELECT производится одновременно из нескольких таблиц.

mysql_connect($host, $user, $pass);
$result=mysql_db_query("database", "select id, name from tabl");
while($row=mysql_fetch_array($result)) {
echo "id: ".$row["id"]."<BR>";
echo "id: ".$row[0]."<BR>";
echo "name: ".$row["name"]."<BR>";
echo "name: ".$row[1]."<BR>";
};
mysql_free_result($result);

mysql_fetch_row

Записывает запись в нумерованный массив.
Синтаксис:

array mysql_fetch_row(int result)

Функция возвращает массив-список со значениями полей очередной строки результата result. Если указатель текущей позиции результата был установлен за последней записью (то есть строки кончились),
возвращается false. Текущая позиция сдвигается к следующей записи, так что очередной вызов mysql_fetch_row()
вернет следующую строку результата.
Каждое поле записи сохраняется в нумерованном элементе массива. Нумерация начинается с 0.

$r=mysql_query("select * from OutTable where age<30");
while($Row=mysql_fetch_row($r)) {
// обрабатываем строку $Row
}

Как видим, цикл оборвется, как только строки закончатся, т.е. когда mysql_fetch_row() вернет false.

mysql_fetch_object

Получение записи в свойствах объекта.
Синтаксис:

object mysql_fetch_object(int result)

Функция возвращает объект, в свойствах которого находятся поля текущей записи. В случае, если записи кончились, возвращает false.

mysql_connect($host, $user, $pass);
$result=mysql_db_query("database", "select * from table");
while($rows=mysql_fetch_object($result)) {
echo $rows->id;
echo $rows->name;
};

mysql_fetch_lengths

Возвращает длину элемента записи.
Синтаксис:

array mysql_fetch_lengths(int result)

Функция mysql_fetch_lengths() возвращает длину значения, полученного при помощи функций mysql_fetch_row(), mysql_fetch_array() или mysql_fetch_object().

Например, в следующем примере:

$arr=mysql_fetch_row($result);
$len=mysql_fetch_lengths($result);

массив $len будет содержать длину соответствующих элементов массива $arr, т.е. $len[0]=strlen(arr[0]) и т.д.

mysql_fetch_field

Возвращает информацию о свойствах объекта и о поле записи.

Синтаксис:

object mysql_fetch_field(int result [, int field_offset])

В необязательном параметре field_offset задается номер поля, свойства которого мы хотим получить. Если этот параметр не указан, при каждом вызове функции mysql_fetch_field() возвращаются свойства следующего поля из набора записей result.

Возвращаемый объект имеет следующие свойства:

name - имя поля
table - имя таблицы, которой принадлежит поле
max_length - максимальная длина поля
not_null - 1, если полю разрешено пустое значение
primary_key - 1, если поле является ключевым
unique_key - 1, если в поле допускаются только уникальные значения
multiple_key - 1, если в поле допустимо иметь повторяющиеся значения
numeric - 1, если поле числовое
blob - 1, если поле имеет тип BLOB
type - тип поля
unsigned - 1, если поле числовое беззнаковое
zerofill - 1, есле поле заполняется нулями

mysql_connect($host,$user,$pass);
$result=mysql_db_query("database", select * from table");
for($i=0;$i<mysql_num_fields($result);$i++) {
echo "Свойства поля $i:<BR>";
$param=mysql_fetch_field($result);
if(!$param) echo "Нет информации о свойствах!";
echo "<PRE>
name: $param->namee
table:$param->tablee
max_length:$param->max_lengthh
not_null:$param->not_nulll
primary_key:$param->primary_keyy
nique_key:$param->unique_keyy
multiple_key:$param->multiple_keyy
numeric:$param->numericc
blob:$param->blobb
type:$param->typee
unsigned:$param->unsignedd
zerofill:$param->zerofilll
</PRE>";
}

mysql_field_seek

Производит перемещение курсора к указанному полю.
Синтаксис:

int mysql_field_seek(int result, int field_offset)

Данная функция является излишней. Следующие фрагменты будут эквивалентны:

$param=mysql_fetch_field($result, field_offset);

и

mysql_field_seek($result, field_offset);
$param=mysql_fetch_field($result);

mysql_field_name

Возвращает имя поля.
Синтаксис:

string mysql_field_name(int result, int filed_index)

Функция mysql_field_name() возвращает имя поля, которое расположено в результате result с индексом filed_index (нумерация начинается с 0).

$result=mysql_query("SELECT id, name from table");
echo mysql_field_name($result,1); // Выведет: name

mysql_field_table

Возвращает имя таблицы, из которой было извлечено поле.
Синтаксис:

string mysql_field_table(int result, int field_offset)

Возвращает имя таблицы, из которой было извлечено поле со смещением field_offset в результате result.