| |
только одно соединение.
string mysql_error([int $link_identifier])
Эта функция возвращает не номер, а строку, содержащую текст сообщения об ошиб-
ке. Ее удобно применять в отладочных целях.
Выполнение запросов
к базе данных
Теперь мы подходим непосредственно к тому, как формировать и посылать запросы к
базе данных. Для этого существует одна-единственная функция —
mysql_query() — и возвращает она не что иное, как идентификатор результирую-
щего набора данных.
Помните, мы говорили, что результат сразу не пересылается клиенту? Так вот,
чтобы
до него добраться, и служит этот идентификатор. Существует очень много функций,
которые принимают его в качестве параметра и возвращают те или иные данные. Их
мы рассмотрим чуть позже.
int mysql_query(string $query [,int $link_identifier])
Эта функция в своем роде универсальна: она посылает MySQL-серверу запрос
$query и возвращает идентификатор ответа, или результата. Параметр $query пред-
ставляет собой строку, составленную по правилам языка SQL. Используется
установ-
ленное ранее соединение $link_identifier, а в случае его отсутствия — последнее
открытое соединение.
Есть несколько команд SQL, которые возвращают только признак, успешно они вы-
полнились или нет (например, это команды UPDATE, INSERT и т. д.).
В таком случае этот признак и будет возвращен функцией. Наоборот, для запроса
SELECT возвращается как раз идентификатор вывода, нулевое значение которого
сви-
детельствует о том, что произошла ошибка.
На самом деле существует еще одна функция для выполнения запроса, но использо-
вать ее менее удобно, поскольку всякий раз приходится указывать имя базы данных,
к которой осуществляется доступ.
int mysql(string $dbname, string $query [,int $link_identifier])
Часть IV. Стандартные функции PHP 366
Служит для тех же целей, что и функция mysql_query(), только обращение осуще-
ствляется не к текущей выбранной базе данных, а к указанной в параметре $dbname.
Если вы владеете сразу несколькими базами данных и обращаетесь к ним одновре-
менно, то, возможно, применение этой функции окажется для вас оправданным. Как
обычно, параметр $link_identifier можно опустить, тогда используется послед-
нее открытое соединение.
Язык запросов MySQL
Разумеется, весь язык запросов SQL в рамках одной главы описать просто
невозмож-
но. О нем сочиняют (и будут сочинять) "объемистые" книги. Однако самые основные
команды я в этой главе приведу. Более подробно о них (и о некоторых других
инст-
рукциях) будет рассказано в части V книги, где описаны и другие
распространенные
приемы программирования.
Все без исключения запросы к базе данных посылаются при помощи одной-
единственной функции — mysql_query() (или mysql(), см. рассуждения выше).
Они должны передаваться ей в виде строкового параметра. Этот параметр, впрочем,
может быть и многострочным — т. е., содержать символы перевода строки. MySQL
допускает включение любого количества пробелов, символов табуляции или перевода
строки везде, где разрешено использование одного пробела (в этом смысле он
похож
на PHP и большинство других языков программирования).
Язык SQL позволяет нам создавать довольно сложные запросы. Ниже перечислены
наиболее употребительные команды MySQL.
Создание таблицы
create table ИмяТаблицы(ИмяПоля тип, ИмяПоля тип, ...)
Этой командой в базе данных создается новая таблица с колонками (полями), опре-
деляемыми своими именами (ИмяПоля) и указанными типами.
Типы полей
Сейчас я перечислю практически все типы полей, которые могут применяться в
MySQL. Их довольно много. Квадратными скобками, по традиции, я буду помечать
необязательные элементы.
Целые числа
Существует несколько разных типов целых чисел, различающихся количеством бай-
тов данных, которые отводятся в базе данных для их хранения. Все эти типы
рознятся
только названиями и (с некоторыми сокращениями) записываются так:
Глава 26. Работа с базой данных MySQL 367
префиксINT [UNSIGNED]
Необязательный флаг UNSIGNED
|
|