Справочник по PHP - white cat
Шрифт:
Интервал:
Закладка:
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_result
Получение определенного поля результата.
Синтаксис:
int mysql_result(int result, int row [, mixed field])
Функция возвращает значение поля field в строке результата с номером row. Параметр field может задавать не только имя поля, но и его номер - позицию, на которой столбец "стоял" при создании таблицы, а также полное имя поля вида: "имя_таблицы.имя_поля". Тем не менее, рекомендуется везде, где это только возможно,использовать именно имена полей.
Функция универсальна: с ее помощью можно "обойти" весь результат по одной ячейке. И хотя это не возбраняется, но делать, однако, не рекомендуется, т.к. mysql_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.
Возвращаемый объект имеет следующие свойства:
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->name
table: $param->table
max_length: $param->max_length
not_null: $param->not_null
primary_key: $param->primary_key
unique_key: $param->unique_key
multiple_key: $param->multiple_key
numeric: $param->numeric
blob: $param->blob
type: $param->type
unsigned: $param->unsigned
zerofill: $param->zerofill
</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.
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);