Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег
Справочник и примеры языка PHP
Abs
abs$pos_num = abs($number);
Abs возвращает абсолютное значение аргумента number.
Addslashes
addslashes$escaped_string = addslashes($string); .
Возвращает копию строки string , в которой экранированы все символы $ \ или '.
Asort
asort$sorted_array = asort($array);
Возвращает отсортированную копию ассоциативного массива array, asort работает только с ассоциативными массивами. Для сортировки обычных массивов используйте sort. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Bindec
bindec$decimal = bindec($binary);
Функция возвращает десятичный эквивалент указанного двоичного числа binary.
Ceil
ceil$higher_integer = ceil($number);
Округляет заданное число до следующего целого числа и возвращает результат как число с плавающей запятой.
Chdir
chdirchdir($directory);
Изменяет текущий рабочий каталог на каталог, заданный аргументом.
Chgrp
chgrpchgrp($file,Sgroupj;
Изменяет идентификатор группы заданного файла на группу, указанную в аргументе.
Chimed
chimedchimed($file,$permissions);
Функция изменяет права доступа к файлу на указанные в аргументе permissions . Этот аргумент задается в восьмеричном виде.
Chmod
chmod$result = chmod($filename, $mode)
Изменяет режим указанного файла на значение, заданное в mode. Если операцию произвести не удалось, возвращается отрицательное целое число. Значение mode может быть задано как десятичное, восьмеричное или шестнадцатеричное.
Chop
chop$stripped_string = chop($string);
Возвращает строку string , у которой удалены все имевшиеся концевые пробелы, табуляции и символы новой строки.
Chown
chownchown($file, Sowner);
Изменяет владельца заданного файла на указанного в аргументе owner. Эта функция будет работать только в том случае, если РНР выполняется от имени суперпользователя, что обычно не рекомендуется.
Chr
chr$character = chr($number);
Возвращает символ ASCII, соответствующий заданному числовому аргументу. Шестнадцатеричные и восьмеричные числа обозначаются как 0xff и 077 соответственно. Остальные числа считаются десятичными.
Clearstack
clearstackclearstack();
Очищает текущий стек. Эта функция создана специально, чтобы обойти некоторые ограничения в дизайне РНР. Если у вас есть пользовательская функция, содержащая большой цикл, вы можете столкнуться с проблемами, связанными с нехваткой стекового пространства. Если это происходит, вызовите clearstack() из этого цикла. Недостаток данного метода в том, что вашу функцию невозможно будет вызвать из другой функции. Результат функции следует сохранить в переменной, которая может быть затем использована по вашему усмотрению.
Clearstatcache
clearstatcacheclearstatcache();
Очищает кэш, используемый всеми функциями, которые получают информацию о файлах. Так как доступ к такой информации занимает достаточно много времени, РНР хранит ее в кэше. Если вам необходи-ма уверенность, что используете самую свежую информацию о файле (то есть не кэшированную), вызовите функцию clearstatcache(); перед получением этой информации.
Close
closeclose ($fd)
Закрывает файл, связанный с указанным файловым дескриптором.
Closedir
closedirclosed!r($directorу);
Закрывает каталог, открытый функцией opendir.
Closelog
closelogcloselog();
Останавливает всю журнализацию, выполняемую функцией syslog .
COS
$result = cos($number);
Возвращает косинус аргумента number.
Count
count$number = count($array);
Возвращает число элементов в массиве array. Если переменная не является массивом, функция вернет значение 1 (так как переменная подобна массиву с только одним элементом). Если аргумент array не указан, функция вернет 0.
Crypt
crypt$encrypted_string = crypt($string);
$encrypted_string = crypt($string, $salt);
Шифрует заданную строку. Используется стандартный метод шифрования Unix - DES, тот же, что используется для шифрования паролей и т. д. Можно задать необязательный двухсимвольный аргумент salt (база для шифрования).
Ctime
ctime$time = ctime($time)
Преобразует время time, заданное некоторым числом секунд с начала отсчета, в обычное текстовое представление времени Unix.
Date
date$formatted_date = date($format,$time);
Вернет time (стандарное время Unix, выдаваемое функцией Time), отформатированное в указанный format. Возвращаемое значение имеет тот же вид, что и format, где все указанные ниже символы заменены на соответствующие значения:
А АМ/РМ
a am/pm
D День (например Sun)
d День (например 13)
F Месяц (например February)
Н Час в 24-часовом формате (например 17)
h Час в 12-часовом формате (например 5)
i Минуты (например 30)
l День (например Sunday)
М Месяц (например Feb)
m Месяц (например 02)
s Секунды (например 27)
Y Год (например 1998)
у Год (например 98)
U Секунды с начала эпохи (отсчета) (например 803537321)
Z День года (например 154)
Dblist
dblist$db_info = dblist();
Вернет список СУБД, поддерживаемых РНР.
Decbin
decbin$binary = decbin($decimal);
Возвращает двоичный эквивалент указанного десятичного числа.
Decoct
decoct$octal = decoct($decimal);
Возвращает восьмеричный эквивалент указанного десятичного числа.
Dexhex
dexhex$hex = dechex($decimal);
Возвращает шестнадцатеричный эквивалент указанного десятичного числа.
Doubleval
doubleval$double = doubleval($variable);
Возвращает значение переменной в виде числа с плавающей запятой.
Echo
echoecho [format_string] expression [, expression ...]
He является настоящей функцией, скорее, это встроенная в РНР версия функции printf языка С. В самом простом варианте echo напечатает результат выражения expression . Можно указать до пяти выражений, результат каждого из которых будет напечатан по очереди. Также можно указать строку форматирования, которая должна иметь тот же вид, что и в функции printf языка С или Perl.
Ехр
ехр$result = exp($number);
Возвращает число е, возведенное в указанную степень.
End
endend($array);
Устанавливает внутренний указатель массива array на последний элемент массива.
Ereg_replace
ereg_replaceereg_replace($expression, $replacement_string, $string);
Замещает все части в указанной строке string , которые отвечают выражению expression , строкой replacement_string.
Ereg
ereg$result = ereg($expression, $string);
$result = ereg($expression, $string, $match_array);
Вернет true, если строка string отвечает регулярному выражению в expression . Если в качестве третьего аргумента указан массив, значение, отвечающее выражению, будет помещено в массив.
Eregi_replace
eregi_replaceeregi_replace($expression, $replacement_string, $string);
Идентично ereg_replace, за исключением того, что при сравнении игнорируется регистр.
Eregi
eregi$result = eregi($expression, $string);
$result = eregi($expression, Sstring, $match_array);
Идентично ereg, за исключением того, что при сравнении игнорируется регистр.
Escapeshellcmd
escapeshellcmd$safe_string = escapeshellcmd(Sstring);
Возвращает копию строки string, все спецсимволы которой перекодированы так, что строку можно безопасно использовать с функциями exec или system.
Eval
evaleval($string);
Обрабатывает содержимое строки string таким образом, как если бы это был скрипт РНР. Для строки выполняется подстановка переменных, поэтому, если вы хотите использовать переменную в этом "минискрипте", ее следует заэкранировать.
Exec
exec$last_line = exec($command);
$last_line = exec($command, $output_array);
$last_line = exec($command, $output_array, $return_code);
Выполняет в вызываемой подоболочке Unix команду command . Возвращается только последняя строка результата команды. Если вторым аргументом указан массив, все строки, выводимые командой, будут помещены в него. Если есть третий аргумент, в эту переменную записывается код возврата команды.
Exit
exitexit();
Завершение синтаксического анализа HTML-файла.
Fclose
fclosefclose($fd);
Закрывает файл, открытый fopen.
Feof
feof$result = feof($fd);
Возвращает true, если файловый дескриптор fd находится в конце файла.
Fgets
fgets$line = fgets($fd, $max_bytes);
Возвращает следующую строку (длиной до max_bytes ) из файла, на который указывает fd.
Fgetss
fgetss$line = fgetss($fd, $max_bytes);
Идентична fgets за исключением того, что эта функция пытается удалить любые теги HTML или РНР при чтении файла.
File
file$аггау = file($filename);
Возвращает массив, каждый элемент которого содержит строку файла, указанного в filename.
Fileatime
fileatime$time = fileatime($filename);
Возвращает (в стандартном формате времени Unix) время последнего доступа к файлу filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает — 1.
Filectime
filectime$time = filectime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения статуса файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filegroup
filegroup$group_id = filegroup($filename);
Возвращает идентификатор группы файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileinode
fileinode$inode = fileinode($filename);
Возвращает индексный дескриптор файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filemtime
filemtime$time = filemtime($filename);
Возвращает время (в стандартном формате времени Unix) последнего изменения файла filename . Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileowner
fileowner$owner = fileowner($filename);
Возвращает ID владельца файла. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Fileperms
fileperms$permissions = fileperms($filename);
Возвращает права доступа к указанному в filename файлу. Если эта информация по каким-либо причинам не может быть получена, функция возвращает —1.
Filesize
filesize$size = filesize($filename);
Возвращает размер файла в байтах. Если эта информация по каким-либо причинам не может быть получена, функция возвращает -1.
Filetype
filetype$type = filetype($filename);
Возвращает одно из следующих значений, указывающих на тип файла
filename : dir, file, fifo, char, block или link.
Floor
floor$lower_integer = floor($number);
Округляет число number до ближайшего меньшего целого и возвращает результат в виде числа с плавающей запятой.
Flush
flushflush();
Сбрасывает содержимое буфера на стандартный вывод, так что конечный пользователь сразу видит все результаты.
Fopen
fopen$fd = fopen($filename, $mode);
Открывает файл в режиме mode и возвращает указатель на дескриптор, связанный с открытым файлом. Как и в функции fopen языка С, режим может быть одним из следующих: "r", "r+", "w", "w+", "a", "а+". Функция возвращает -1, если файл невозможно открыть.
Fpassthru
fpassthrufpassthru($fd);
Печатает все оставшиеся данные файла, на который указывает дескриптор fd.
Fprintf
fprintffprintf($fd, $string [, arg ...])
Работает как функция С (или Perl) с тем же именем. Первый аргумент - это файловый дескриптор. Отформатированная строка печатается в файл, связанный с файловым дескриптором.
Fputs
fputsfputs($fd, $string);
Записывает строку string в файл, связанный с дескриптором fd.
Fseek
fseekfseek($fd, $position);
Устанавливает дескриптор файла fd на позицию (смещение от начала файла), указанную в аргументе position.
Fsockopen
fsockopen$fd = fsockopen($hostname,$port);
Открывает соединение с hostname на порте port и возвращает дескриптор файла, связанный с открытым соединением. Если номер порта равен 0, аргумент hostname будет рассматриваться как имя в стиле имени файла сокета Unix на локальном хосте. В случае ошибки функция вернет следующие значения: -3, если не удалось создать сокет; —4, если не удалось разрешить имя хоста (установить IP-адрес); —5, если в соединении было отказано или оно закончилось по тайм-ауту; -6, если потерпел неудачу вызов fdopen() и, наконец, -7, если потерпел неудачу вызов setvbuf().
Ftell
ftellSposition = ftell($fd);
Возвращает позицию указателя в файле, связанном с fd. Это значение можно использовать в качестве аргумента для fseek.
Справочник и примеры языка PHP
get my in ode$inode = getmyinode();
Возвращает указатель inode HTML-файла, содержащего текущий скрипт РНР.
Справочник и примеры языка PHP
getaccdir$directory = getaccdir();
Возвращает имя каталога, где хранятся файлы конфигурации РНР.
Справочник и примеры языка PHP
getenv$value = getenv($variable);
Возвращает значение переменной окружения, указанной в variable .
Справочник и примеры языка PHP
gethostbyaddr$hostname = gethostbyaddr($address);
Возвращает имя хоста по указанному IP адресу.
Справочник и примеры языка PHP
gethostbynameSaddress = gethostbyname($hostname);
Возвращает IP-адрес указанного в hostname хоста.
Справочник и примеры языка PHP
getiastmod$time = getlastmod();
Возвращает время (в стандартном формате времени Unix) последнего изменения страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getimagesize$file_info_array = getimagesize($filename);
Возвращает массив информации о графическом изображении в указанном filename. Первый элемент массива- ширина изображения, второй - высота, и третий - тип рисунка. В настоящее время распознаются типы GIF, JPG и PNG. Четвертым элементом является строка формата "width=xxx height=yyy", которая может непосредственно использоваться в теге HTML
Справочник и примеры языка PHP
getlastaccess$time = getlastaccess();
Возвращает дату и время (в стандартном формате Unix) последнего обращения к странице. Эта функция будет работать, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastbrowser$browser = getlastbrowser();
Возвращает идентификационную строку броузера, использованного при последнем обращении к текущей странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastemail$email = getlastemail();
Возвращает адрес электронной почты пользователя, который последним обращался к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlasthost$host = getlasthost();
Возвращает имя хоста, с которого было сделано последнее обращение к странице. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlastref$url = getlastref();
Возвращает URL узла, с которого пришел последний посетитель страницы. Эта функция работает, только если РНР был откомпилирован с опцией регистрации доступа.
Справочник и примеры языка PHP
getlogdir$directory = getlogdir();
Возвращает каталог, в котором находятся журналы регистрации РНР.
Справочник и примеры языка PHP
getmypid$pid = getmypid();
Возвращает идентификатор текущего РНР-процесса.
Справочник и примеры языка PHP
getmyuid$id = getmyuid();
Возвращает идентификатор пользователя владельца HTML-файла, содержащего текущий скрипт.
Справочник и примеры языка PHP
getpid$pid = getpid()
Возвращает идентификатор процесса (PID) программы Lite.
Справочник и примеры языка PHP
getpwnam$entry = getpwnam($username)
Возвращает массив информации о пользователе с пользовательским именем username . В массиве имеются следующие поля:
Справочник и примеры языка PHP
getpwuid$entry = getpwuid($UID)
Возвращает массив, идентичный массиву, возвращаемому getpwnam для пользователя с пользовательским ID $UID.
Справочник и примеры языка PHP
getrandmax$number = getrandmax();
Возвращает максимально возможное число, которое может вернуть функция rand.
Справочник и примеры языка PHP
getstartlogging$time = getstartlogging();
Возвращает время (в стандартном формате Unix) начала регистрации на странице HTML, которая содержит текущий скрипт.
Справочник и примеры языка PHP
gettoday$hits = gettoday();
Возвращает число обращений к данной странице, начиная с 0 часов текущих суток.
Справочник и примеры языка PHP
gettotal$hits = gettotal();
Возвращает общее число обращений к текущей странице с начала регистрации доступа к странице.
Справочник и примеры языка PHP
gettype$type = gettype($variable);
Возвращает одно из следующих значений: "integer", "double" или "string", указывающих на тип заданной переменной variable .
Справочник и примеры языка PHP
gmdate$formatted_date = gmdate($format, $time);
Идентично Date за исключением того, что для обработки значений используется время по Гринвичу (GMT) вместо местного времени.
Header
headerheader($header_string);
Выводит header_string как HTTP-заголовок. Эта функция должна использоваться перед любым HTML-текстом в файле и перед любыми командами РНР, которые выдают какой-либо результат.
Hexdec
hexdec$decimal = hexdec($hex);
Возвращает десятичный эквивалент шестнадцатеричного аргумента hex.
Htmlspecialchars
htmlspecialchars$html_string = htmlspecialchars($string);
Возвращает строку string, заменяя любые специальные символы (включая <, >, &, " и все ASCII-символы с кодами от 160 до 255) на соответствующие им HTML-коды.
Imagearc
imagearcimagearc($image, $сх, $су, $width, $height, $start, $end, $color);
Рисует сектор эллипса в изображении image цветом, указанным в color. Центр эллипса находится в точке (сх, су), ширина указана аргументом width, высота- height, начальная и конечная точки указываются в градусах аргументами start и end соответственно.
Imagechar
imagecharimagechar($image, $size, $x, $y, $character, $color);
Рисует символ character в изображении image цветом, назначенным в color, с размером шрифта size. Левый верхний угол символа находится в точке (х, у).
Imagecharup
imagecharupimagecharup($image, $size, $x, $y, $character, $color);
Функция идентична imagechar за исключением того, что символ выводится вертикально, (х, у) указывают на координаты верхнего левого угла.
Imagecolorallocate
imagecolorallocate$color = imagecolorallocate($image, $red, $green, $blue);
Возвращает цвет для работы с изображением image, используя указанные RGB-компоненты.
Imagecolortransparent
imagecolortransparentimagecolortransparent($image, $color);
Устанавливает color как прозрачный цвет для изображения image.
Imagecopyresized
imagecopyresizedimagecopyresized($dest_image, $src_image, $dest_x, $dest_y, $src_x, $src_y, $dest_width, $dest_heigth, $src_width, $src_heigth);
Копирует прямоугольную область из изображения src_image в изображение dest_image , изменяя размер, если это необходимо. Аргументы dest_x и dest_y являются координатами левой верхней вершины прямоугольника в принимающем изображении, a dest_height и dest_width - его высотой и шириной. Аргументы src_x, src_y,' src_width, и src_heigth являются соответствующими значениями для изображения-источника.
Imagecreate
imagecreate$image = imagecreate($width, $height);
Возвращает идентификатор изображения, указывающий на новое изображение с заданными размерами.
Imagecreatefromgif
imagecreatefromgif$image = imagecreatefromgif($filename);
Возвращает идентификатор изображения, указывающий на изображение в заданном файле filename .
Imagedestroy
imagedestroyimagedestroy($image);
Освобождает все ресурсы, занятые image.
Imagefill
imagefillimagefill($image, $х, $у, $color);
Выполняет заливку изображения image цветом color, начиная с точки (х,у).
Imagefilledpolygon
imagefilledpolygonimagefilledpolygon($image, $points_array, $num_points, $color);
Создает многоугольник в image, заполненный цветом color. Второй аргумент является массивом вершин многоугольника. Первые два элемента - это значения х и у первой вершины. Следующие два элемента— координаты следующей вершины и т. д. Третий аргумент указывает на число вершин многоугольника.
Imagefilledrectangle
imagefilledrectangleimagefilledrectangle($image, $х1, $у1, $х2, $у2, $color);
Создает прямоугольник в image, заполненный цветом color. Аргументы х1 и у1 образуют верхнюю левую вершину прямоугольника, а х2 и у2 — правую нижнюю.
Imagefilltoborder
imagefilltoborderimagefilltoborder($image, $x, $y, $border, $color);
Функция идентична imagefill за исключением того, что заливка цветом прекращается там, где встречается цвет border.
Imagegif
imagegifimagegif($image);
imagegif($image, $filename);
Выводит изображение image как рисунок GIF. Если указан второй аргумент, рисунок GIF будет записан в этот файл, иначе он будет направлен прямо в броузер.
Imageinterlace
imageinterlaceimageinterlace($image, $interlace);
Функция переключает бит чередования для изображения image на значение interlace , которое может быть равно 1 (включить) или 0 (выключить).
Imageline
imagelineimageline($iraage, $х1, $у1, $х2, $у2, $color);
Создает линию указанного в color цвета от точки (х1, у2) до точки (х2, у2) в изображении image.
Imagepolygon
imagepolygonimagepolygon($image, $points, $numpoints, $color);
Функция идентична imagef illedpolygon за исключением того, что многоугольник не заполняется.
Imagerectangle
imagerectangleimagerectangle($image, $х1, $у1, $х2, $у2, $color);
Функция идентична imagefilledrectangle за исключением того, что прямоугольник не заполняется.
Imagesetpixel
imagesetpixelimagesetpixel($image, $x, $y, $color);
Рисует точку в изображении image в позиции (х, у) цветом, указанным в color.
Imagestring up
imagestring upimagestringup($image, Ssize, $x, $y, $string, $color);
Функция идентична imagecharup за исключением того, что она выводит всю строку string.
Imagestring
imagestringimagestring($image, $size, $x, $y, $string, $color);
Функция идентична imagechar за исключением того, что она выводит всю строку string.
Imagesx
imagesx$x_size = imagesx($image);
Возвращает ширину в пикселах изображения, указанного в image.
Imagesy
imagesy$y_size = imagesy($image);
Возвращает высоту изображения в пикселах.
Include
includeinclude($filename);
Вставляет файл, указанный в filename , в текущую страницу. Выполняется полный синтаксический PHP-анализ подключаемого файла. В поисках файла filename просматривается каждый из каталогов, указанных в переменной окружения PHP_INCLUDE_ PATH.
IncludeFile
includeFileincludeFile($filename)
Эта функция подключает файл filename к результату программы. Файл никак не изменяется и не анализируется.
Initsyslog
initsysloginitsyslog();
Подготавливает систему к регистрации событий с помощью syslog. После вызова этой функции вы можете использовать syslog для записи в журнал.
Intval
intval$integer = intval($variable);
Возвращает содержимое variable в виде целого числа.
Isset
isset$defined = isset($variable);
Возвращает 1, если переменная variable определена, иначе вернет 0.
Key
key$key = key($array);
Возвращает ключ текущего элемента массива array. Для ассоциативного массива возвращает имя ключа. Для обычного массива возвращает номер элемента.
Kill
kill$result = kill($pid, $signal)
Посылает сигнал signal процессу pid. Если операцию выполнить не удалось, возвращается отрицательное целое число.
Link
linklink($target, $filename);
Создает жесткую ссылку от filename к target.
Linkinfo
linkinfo$info = linkinfo($filename);
Возвращает истинное значение, если ссылка, указанная в filename , существует (но не обязательно существует файл, на который указывает ссылка). В случае ошибки функция возвращает —1.
Lite
LiteLite - это язык сценариев, используемый W3-mSQL. Его синтаксис очень похож на С и еще больше на Perl. Фактически, многие скрипты Lite синтаксически неотличимы от сценариев Perl. Однако Lite лишен многих расширенных возможностей Perl.
Ниже приводится краткий справочник стандартных функций Lite, доступных при использовании W3-mSQL.
Log
log$result = log($number);
Возвращает натуральный логарифм аргумента number.
Возвращает логарифм по основанию 10
log10$result = Iog10($number);
Возвращает логарифм по основанию 10 аргумента number.
Logas
logaslogas($filename);
Регистрирует посещение текущей страницы как посещение указанного filename вместо файлового имени страницы.
mail($to, $subject, $message);
mail($to, $subject, $message, $headers);
Посылает электронное письмо по адресу, указанному в параметре to, с темой, указанной в параметре subject, и поместит в тело письма значение аргумента message . Если указан четвертый аргумент, он добавляется к заголовку письма.
Max
max$maximum = max($array);
Возвращает максимальное значение в массиве array. Если это строковый массив, функция возвращает элемент, последний по алфавиту.
Возвращает хэш
md5$hash = md5($string);
Возвращает хэш (MD5) строки string .
Microtime
microtime$ms = microtime();
Возвращает строку, содержащую часть текущей секунды (в виде десятичной дроби), за которой следует стандартное время Unix.
Min
min$minimum = min($array);
Возвращает минимальное значение в массиве array. Если это строковый массив, функция вернет элемент, который был бы первым по алфавиту.
Mkdir
mkdirmkdir($directory, $mode);
Создает каталог directory с указанным режимом mode, mode должно быть восьмеричным значением.
Mktime
mktime$time = mktime($hour,$minute,$second,$month,$day, Syear);
Возвращает время в стандартном формате времени Unix, основываясь на заданных аргументах. Если указано менее шести параметров, параметры справа считаются соответствующими текущему значению времени (например, если дано четыре параметра, используются текущий день и год).
MsqHieldflags mysql_fieldflags
msqHieldflags mysql_fieldflags$flags = msql_fieldflags($result, $i);
$flags = mysql_fieldflags($result, $i);
Возвращает флаги для в i-того поля в result. Возвращаемое значение может быть одним из следующих: "primary key", "not null", "not null primary key" или << >>.
MsqICIose
msqICIosemsqlClose($socket)
Закрывает подключение, указанное сокетом socket.
MsqIConnect
msqIConnect$socket = msqlConnect($host)
Подключается к серверу mSQL на хосте host. Возвращает номер соке-та, используемый для последующей связи с сервером баз данных. При неудаче возвращается отрицательное целое число.
MsqIDataSeek
msqIDataSeekmsqlDataSeek($result, $location)
Помещает 'указатель' для result среазу перед записью. Указав location 0, вы поместите указатель в начало данных. Следующий вызов msqlFetchRow выберет строку сразу после location.
MsqIFieldSeek
msqIFieldSeekmsqlFieldSeek($result, Slocation)
Функция изменяет 'указатель' на результат, возвращаемый msqllnitFieldList, так же как msqIDataSeek изменяет результат msqlStoreResult . ..
MsqIFreeResult
msqIFreeResultmsqlFreeResult($result)
Функция освобождает всю память, использованную результатом, выбранным из базы с помощью msqlStoreRcsult . Эту функцию необходимо вызывать для каждого результата, с которым вы закончили работать.
MsqIListDBs
msqIListDBs$databases = msqlListDBs($socket)
Возвращает массив имен всех доступных баз данных на сервере, указанном аргументом socket.
MsqIListField
msqIListField$tableinfo = msqlListField($result)
Возвращает массив информации о следующем поле таблицы, созданной msqllnitFieldList , указываемой аргументом result. Каждый последующий вызов функции msqIListField выдает новый массив информации, пока не закончатся поля таблицы. Массив состоит из следующих полей:
MsqIListTables
msqIListTables$tables = msqlListTables($socket, $database)
Возвращает массив имен доступных таблиц базы данных database на сервере, указанном аргументом socket.
MsqINumRows
msqINumRowsmsqlNumRows($result)
Возвращает количество записей в данных, содержащихся в result.
MsqIQuery
msqIQuery$result = msqlQuery($socket, $query)
Пытается послать запрос query к подключению, указанному аргументом socket. Если запрос не был успешно выполнен, возвращается отрицательное целое число.
MsqISelectDB
msqISelectDB$result = msqlSelectDB($socket, $database)
Функция пытается подключить socket к базе данных, указанной аргументом database . Если попытка не удалась, возвращается отрицательное целое число.
MsqIStoreResult
msqIStoreResult$result = msqIStoreResult
Выбирает все данные, полученные в результате последнего вызова msqlQuery , и сохраняет их для чтения и обработки.
Msql_close mysql_close
msql_close mysql_closemsql_close(); mysql_close();
Закрывает подключение к серверу базы данных mSQL/MySQL.
Msql_connect mysql_connect
msql_connect mysql_connectmsql_connect($hostname);
mysql_connect($hostname);
mysql_connect($hostname, Susername);
mysql_connect($hostname, $username, Spassword);
Создает соединение с сервером базы данных mSQL/MySQL на указанном хосте hostname. Подключение к серверу на локальном хосте осуществляется с помощью m(y)sql_connect("localhost"). Если при первом вызове m(y)sql нет подключения к базе данных, подключение к локальному хосту создается автоматически. Для MySQL может быть указан необязательный аргумент username или комбинация username/ password. Если PHP запущен в расширенном режиме безопасности (называемом SAFE MODE), username должен принадлежать либо владельцу HTML-документа, либо владельцу процесса веб-сервера.
Msql_createdb mysql_createdb
msql_createdb mysql_createdbmsql_createdb($database); mysql_createdb($database);
Создает указанную базу данных.
Msql_dbname mysql_dbname
msql_dbname mysql_dbname$db = msql_dbname($result, $i);
$db = mysql_dbname($result, $i);
Вернет имя базы данных, хранящееся в i-том поле результата, возвращенного функцией m(y)sql_listdbs .
Msql_dropdb mysql_dropdb
msql_dropdb mysql_dropdbmsql_dropdb($database);
mysql_dropdb($database);
Удаляет базу данных database и все ее таблицы.
Msql_fieldlen mysql_fieldlen
msql_fieldlen mysql_fieldlen$length =
Msql_fieldlen($result $i);
msql_fieldlen($result, $i);$length = mysql_fieldlen($result, $i);
Возвращает длину i-го поля в result.
Msql_fieldname mysql_fieldname
msql_fieldname mysql_fieldname$name = msql_fieldname($result, $i);
$name = mysql_fieldname($result, $i);
Возвращает имя столбца i-го поля в result .-
Msql_fieldtype mysql_fieldtype
msql_fieldtype mysql_fieldtype$type = msql_fieldtype($result, $i);
$type = mysql_fieldtype($result, $i);
Возвращает тип i-го поля в result (то есть "char", "real" и т. д.).
Msql_freeresult mysql_freeresult
msql_freeresult mysql_freeresultmsql_freeresult($result);
mysql_freeresult($result);
Освобождает память, связанную с результатом работы mSQL/MySQL. Вся память автоматически освобождается по завершении скрипта, поэтому используйте эту функцию, только если ваш скрипт занимает слишком много памяти.
Msql_isttables mysql_listtables
msql_isttables mysql_listtables$result = msql_listtables($database);
$result = mysql_listtables($database);
Возвращает указатель на результат, содержащий имена всех таблиц базы данных database . Функция m(y)sql_tablename может выбирать значения из этого указателя.
Msql_listdbs mysql_listdbs
msql_listdbs mysql_listdbs$result = msql_listdbs();
$result = mysql_listdbs();
Возвращает указатель на результат, содержащий список имен всех баз данных, доступных на сервере mSQL/MySQL. Функция m(y)sql_dbname может выбирать значения из этого указателя.
Msql_listfields mysql_listfields
msql_listfields mysql_listfields$result = msql_listfields($database, $table);
$result = mysqllistfields($database, $table);
Вернет указатель на результат, дающий информацию о полях таблицы table в назначенной базе данных. Функции m(y)sql_fieldflags , m(y)sql_fieldlen , m(y)sql_fieldname и m(y)sql_ fieldtype могут выбирать значения из этого указателя.
Msql mysql
msql mysql$result = msql($database, $query);
$result = mysql($database, $query);
Посылает запрос query базе данных mSQL/MySQL, указанной в аргументе database. Для не SELECT-запросов функция возвращает 0 для mSQL 1.x и MySQL, а для mSQL 2.x возвращает число измененных записей. Для запроса SELECT функция возвращает идентификатор результата, который может быть использован в других функциях msql_ *. В случае ошибки функция вернет -1.
Msql_numfields mysql_numfields
msql_numfields mysql_numfields$num_fields = msql_numfields($result);
$nuni_fields = mysql_numfields($result);
Возвращает число полей в result.
Msql_nurn rows msql_numrows
msql_nurn rows msql_numrows$num_rows = msql_numrows($result);
$num_rows = mysql_numrows($result);_
Возвращает количество записей в result.
Msql_regcase
msql_regcase$new_string = msql_regcase($string);
Возвращает копию строки string, преобразованную в регулярное выражение, необходимое для выполнения поиска не зависящих от регистра совпадений в запросе mSQL.
Msql_result mysql_result
msql_result mysql_result$result_string = msql_result($result, $i, $field);
$result_string = mysql_result($result, $1, $field);
Данная функция возвращает значение из указанного поля field 1-й записи набора result. Аргумент field - это имя столбца, и он может быть указан как table, field для результирующих наборов, использующих соединения таблиц. В аргумент field допускается включение любой внутренней функции MySQL, которая может обрабатывать результаты SELECT, например, mysql_result ($result, $i, "length($field)") .
MsqlEncode
msqlEncode$string = msqlEncode($string)
Функция возвращает перекодированную копию строки string, которую можно использовать в запросе mSQL.
MsqlFetchRow
msqlFetchRow$row = msqlFetchRow($result)
Эта функция возвращает в виде массива следующую доступную запись из result.
Msqljtablename mysql_tablename
msqljtablename mysql_tablename$name = msql_tablename($result, $i);
$name = mysql_tablename($result, $i);
Вернет имя таблицы, хранящееся в i-м поле результата, возвращенного функцией m(y)sql_listtables .
MsqllnitFieldList
msqllnitFieldList$result = msqlInitFieldList($socket, $database, $table)
Создает информационную таблицу о таблице table в базе данных database на сервере, указанном аргументом socket.
My sql_af f ected_ro ws
my sql_af f ected_ro ws$num_rows = mysql_affected_rows();
Возвращает число записей, измененных последней из команд INSERT, UPDATE или DELETE.
Mysql_insertjd
mysql_insertjd$id_num = mysql_insert_id();
Возвращает идентификационный номер, использовавшийся при последней команде INSERT, содержавшей поле auto_increment.
Next
nextnext($array);
Перемещает указатель массива array на следующий элемент и возвращает текущий.
Octdec
octdec$decimal = octdec($octal);
Возвращает десятичный эквивалент восьмеричного аргумента octal.
Open
open$fd = open($file, $mode)
Эта функция открывает указанный файл, используя заданный режим, и связывает с файлом файловый дескриптор. Режимы могут быть следующими:
> Открыть файл для записи
<Открыть файл для чтения
<> Открыть файл для чтения или записи
<Р Создать именованный канал и открыть его для чтения
>Р Создать именованный канал и открыть его для записи
<| Выполнить файл как команду и прочесть результаты
>| Выполнить файл как команду и сделать запись в процесс
Opendir
opendiropendir($directory);
Открывает указанный каталог для использования с функцией readdir. Вы должны закрыть каталог с помощью closedir после работы с ним.
Openlog
openlogopenlog($ident, $options, $facllity);
Открывает для записи системный журнал. Эту функцию необходимо вызывать после initlog и до первого вызова syslog . Аргументы те же, что и при вызове системной функции Unix openlog . Значение ident предваряет каждую запись журнала и обычно является именем программы. Значение options может быть одним из следующих: LOG_CONS (выводить журнал на консоль, если произошла ошибка в стандартной процедуре); LOG_NDELAY (открыть журнал немедленно вместо ожидания первой записи журнала); LOG_PERROR (записывать также в stderr); LOG_PID (включать идентификатор процесса (PID) в каждую запись журнала). Можно комбинировать эти параметры с помощью побитового ИЛИ (например (LOG_DELAY | LOG_PERROR LOG_PID)). Facility - это один из установленных системой уровней журнализации (например, LOG_SYSLOG, LOG_USER, LOG_KERN и т. д.).
Ord
ord$number = ord($character);
Возвращает ASCII-значение символа character.
Parse_str
parse_strparse_str($string);
Разбирает строку URL в формате "переменная 1=значение1 &переменная2=значение2" и инициализирует переменные, присваивая им соответствующие значения. Программа РНР выполняет эту функцию автоматически для приходящих из форм данных в начале каждого скрипта.
Passthru
passthrupassthru($command);
passthru($command, $returevalue);
Выполняет внешнюю команду command и выдает все результаты ее выполнения непосредственно броузеру. Если указан второй аргумент, туда помещается возвращаемое значение.
Pclose
pclosepclose($fd);
Закрывает канал, открытый функцией рореп.
Phpinfo
phpinfophpinfo();
Печатает информационную страницу, полезную при отладке установки РНР. Это та же страница, которая печатается при добавлении "?info" к любому РНР URL, или если вы обращаетесь непосредственно к двоичным файлам РНР (то есть, http://www.myserver.com/cgi-bin/php).
Phpversion
phpversion$version = phpversion();
Возвращает номер версии текущего запущенного РНР.
Pid
pid$pid = getppid()
Возвращает идентификатор (PID) родительского для программы Lite процесса.
Popen
popen$fd = popen($command, $mode);
Запускает внешнюю команду command и либо посылает ей данные (если установлен режим записи: mode = "w"), либо читает данные из команды (если в mode указать "r"). Любой файловый дескриптор, открытый таким образом, должен быть закрыт функцией pclose.
Pos
pos$position = pos($array['element']);
Возвращает число - позицию указанного элемента ' element' в ассоциативном массиве а г ray.
Pow
pow$result = pow($x, $y);
Возвращает х, возведенное в степень у.
Prev
prevSelement = prev($array);
Перемещает внутренний указатель массива а г ray на предыдущий элемент и возвращает его.
Printf
printfprintf($string [, arg, ... ])
Работает как функция С (или Perl) с тем же именем. Значение переменных не подставляется; для ввода переменных в строку необходимо использовать стандартное для С форматирование '%s'.
Putenv
putenvputenv($string);
Помещает заданную строку string в окружение. Обратите внимание, что локальная среда окружения уничтожается по окончании выполнения скрипта, поэтому эта функция полезна только при вызове внешних программ из скрипта.
Quote met a
quote met a$quoted_string = quotemeta($string);
Возвращает строку string, в которой все специальные символы экранированы таким образом, что ее можно безопасно использовать в регулярных выражениях.
Rand
rand$number = rand();
Возвращает случайное число в диапазоне от 0 и до числа RANDMAX, определяемого системой. Вы должны указать начальное число генератору случайных чисел, используя srand в начале вашего скрипта. Сделать это необходимо только один раз.
Read
read$data = read($fd, $length)
Читает указанное в length число байт из заданного файлового дескриптора.
Readdir
readdir$file = readdir();
Возвращает следующий элемент из текущего открытого каталога и сдвигает указатель каталога. Новые обращения к этой функции будут возвращать следующие элементы каталога до тех пор, пока записи об элементах каталога не закончатся.
Readfile
readfile$filesize = readfile($filename);
Выдает содержимое файла filename непосредственно броузеру и возвращает размер файла. Эту функцию можно спокойно выполнять с двоичными файлами, такими как файлы изображений.
Readlink
readlink$filename = readline($link);
Возвращает путь к настоящему файлу, на который ссылается link. В случае ошибки функция вернет -1.
Readln
readln$line =readln($fd)
Читает следующую строку из указанного файлового дескриптора.
Readtok
readtok$data = readtok($fd, $token)
Функция читает данные из указанного файлового дескриптора, пока не встретит маркер token. Используется только первый символ из token.
Reg_match
reg_match$result = reg_match($expression, $string);
$result = reg_match($expression, $string, $array);
Функция идентична ereg. Она поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_replace
reg_replacereg_replace($expression, $replacement, $string);
Идентична ereg_replace. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Reg_search
reg_search$partial_string = reg_search($expression, $string);
$partial_string = reg_search($expression, $string, $array);
Функция идентична ereg за исключением того, что она возвращает часть строки string , оставшуюся после первого совпадения. Если совпадения не обнаружено, функция возвращает пустую строку. Эта функция поддерживается только для обратной совместимости с предыдущими версиями РНР.
Rename
renamerename($oldfile, $newfile);
Переименовывает oldfile в newfile .
Reset
resetreset($array);
Перемещает внутренний указатель массива array на первый элемент и возвращает этот элемент.
Return
returnreturn($value);
Выходит из пользовательской функции и возвращает значение value.
Rewind
rewindrewind($fd);
Устанавливает указатель файла f d в начало файла.
Rewinddir
rewinddirrewinddir();
Передвигает указатель текущего каталога на начало каталога.
Rmdir
rmdirrmdir($directory);
Удаляет каталог directory , если он пуст.
Rsort
rsort$sorted_array = rsort($array)
Возвращает отсортированную в порядке убывания копию ассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
SetContentType
setContentTypesetContentType($string)
Заменяет заданный по умолчанию тип содержимого HTML-страницы, содержащей скрипт, на значение, указанное в string. Эта функция должна быть самой первой строкой документа. Перед ней не должно быть даже пустой строки.
Setcookie
setcookiesetcookie($name);
setcookie($name, $value, $expire, $path, $domain, $secure);
Посылает броузеру cookie с указанными атрибутами. Если задано только имя name, cookie с таким именем будет удален из броузера. Для пропуска одного из аргументов он может быть заменен на "" (или на 0 в случае с expire и secure).
Seterrorreporting
seterrorreportingseterrorreporting($value);
Если значение value равно 0, выдача сообщений об ошибках отключается, иначе все сообщения выводятся в обычном режиме.
Setlogging
setloggingsetlogging($value);
Если значение value является ненулевым, журнализация доступа к текущей странице будет разрешена, иначе - запрещена.
Setshowinfo
setshowinfosetshowinfo($value);
Если значение value не нулевое, внизу страницы будет напечатан информационный нижний колонтитул.
Settype
settypesettype($variable, $type);
Устанавливает тип переменной variable в тип type, который может быть integer, double или string .
Shl
shl$value = shl($number, $b);
Возвращает значение number, сдвинутое влево на заданное в b число бит.
Shr
shr$value = shr($number, $b);
Возвращает значение number, сдвинутое вправо на заданное в b число бит.
Sin
sin$value = sin($number);
Возвращает синус аргумента number (в радианах).
Sleep
sleepsleep($seconds);
Останавливает обработку страницы на указанное количество секунд.
Sort
sort$sorted_array = sort($array)
Возвращает отсортированную в порядке возрастания копию неассоциативного массива array. Если первый элемент массива является числом, возвращаемый массив будет отсортирован по порядку, иначе он будет отсортирован по алфавиту.
Soundex
soundex$soundex_key =soundex($string);
Возвращает ключ soundex строки string .
Split
split$strings = split($string, $token)
Разделяет заданную строку на массив строк, используя как разделитель символ token..
Sprintf
sprintf$string = sprintf($format, $arg, [$arg, $arg, ...]);
Возвращает форматированную строку format, в который каждый индикатор переменной в стиле С printf заменяется соответствующим значением arg. Можно указать до 5 аргументов.
Sqrt
sqrt$value = sqrl($number);
Возвращает квадратный корень числа number.
Srand
srandsrand($integer);
Инициализирует генератор случайных чисел целочисленным аргументом integer. Эту функцию необходимо вызвать один (и только один) раз в начале любого скрипта, в котором вы используете функцию rand.
Stat
stat$stat = stat($file)
Возвращает массив информации о файле file. В массиве содержатся следующие элементы:
Strchr strstr
strchr strstr$substring = strchr($string, $value);
$substring = strstr($string, $value); .
Возвращает часть строки string после первого обнаружения символа value в строке, strchr и strstr - идентичные функции, и включены обе для полноты.
Strftime
strftime$time = strftime($format, $time)
Преобразует время Unix в текстовое представление времени, используя заданный формат format. Все описанные ниже последовательности в строке format заменяются на соответствующие им значения:
%а
День недели в виде местных сокращений названий дней недели.
%А
День недели в виде местных полных названий дней недели.
%b
Месяц в виде местных сокращенных названий.
%В
Месяц в виде местных полных названий месяцев.
%d
День месяца (01-31).
%D
День в виде % m/% d/% у.
%е
День месяца (1-31, перед числами первого десятка добавляется пробел).
%Н
Час (00-23).
%I
Час (00-12).
%j
День в году (001-366).
%h
Часы (0-23, отделенные пробелами).
%l
Часы (1-12, отделенные пробелами).
%m
Номер месяца (01—12).
%M
Минуты (00-59).
%р
AM или РМ.
%S
Секунды (00-59).
%Т
Время в виде % Н:% М:% S.
%U
Номер недели в году (01-52).
%w
День недели (0-6, воскресенье является 0).
%y
Год века (00-99).
%Y
Год, включая век (например 1999).
Stripslashes
stripslashes$plain_string = stripslashes($escaped_string);
Удаляет все управляющие символы из строки escaped_string .
Strlen
strlen$length = strlen($string);
Возвращает длину строки string .
Strrchr
strrchr$substring = strrchr($string, $character);
Просматривает с конца строку string в поисках указанного символа. Функция возвращает часть строки, начиная с места, где был найден искомый символ character. Если символ не обнаружен, возвращается пустая строка.
Strseg
strseg$string = strseg($string, $start, $end)
Возвращает подстроку из указанной строки, которая начинается с позиции start и закачивается на позиции end от начала строки.
Strtok
strtok$substring = strtok($string, $characters);
$substring = strtok($characters);
Разделяет строку string на подстроки, используя в качестве разделителя любой символ, указанный в characters . После первого вызова strtok не указывайте строковый аргумент в последующих вызовах, в этом случае функция вернет каждую удачно выделенную подстроку, пока не будет достигнут конец string .
Strtolower
strtolower$lc_string = strtolower($string);
Возвращает string , где все символы преобразованы в символы нижнего регистра.
Strtoupper
strtoupper$uc_string = strtoupper($string);
Возвращает string , где все символы преобразованы в символы верхнего регистра.
Strtr
strtrstrtr($string, $set1, $set2);
Все символы в строке string, которые входят в набор setl, функция преобразует в соответствующие символы в наборе set2. Если set1 длиннее set2, последний символ из set2 используется для "лишних" символов из set1. Если set2 длиннее set1, "лишние" символы из set2 игнорируются.
Strval
strval$string = strval($variable);
Возвращает переменную variable в виде строкового значения.
Sub
sub$string = sub($string, $ехр1, $ехрr2)
Заменяет любые вхождения exprl в string на значение ехрг2. Значения exprl и ехрг2 могут быть разными по длине, строка string автоматически будет укорочена либо удлинена.
Substr
substr$substring = substr($string, $start, Slength);
Возвращает часть строки string , которая начинается с позиции start (0 является первым символом) и имеет длину в length символов.
Symlink
symlinksymlink($target, $filename);
Создает символическую связь (ссылку) от filename к target.
Syslog
syslogsyslog($level, $message);
Записывает сообщение message в системный журнал с уровнем level.
System
system$results = system($command);
$results = system($command, $return_value);
Выполняет указанную внешнюю команду command и возвращает все результаты. Если задан второй аргумент, туда записывается возвращаемое значение (код возврата) команды.
Tan
tan$value = tan($number);
Возвращает тангенс аргумента number (в радианах).
Tempnam
tempnam$filename = tempnam($path, $prefix);
Возвращает имя файла с префиксом prefix, который будет уникальным в каталоге, указанном в path.
Time
time$time = time();
Возвращает текущее время в стандартном формате времени Unix (число секунд после 1 января 1970 года).
Tr...
tr$string = tr($string, $list1, $list2)
Функция замещает все символы из списка listl, которые находит в строке string, их эквивалентом в списке list2 (например, tr("Robby", "oy", "ai") вернет строку "Rabbi"). Список символов может содержать диапазон символов, разделенный "-". В частности, tr("e.e. cummings", "a-z," "A-Z") вернет строку "E.E. CUMMINGS."
Truncate
truncate$result = truncate($fale, $length)
Функция пытается сократить размер файла до указанной в байтах длины length . Обычно используется для создания файла с нулевой длиной. Если попытка не удалась, вернется отрицательное целое число.
Umask
umask$umask = umask();
umask($umask);
Возвращает текущую маску umask, если аргумент не указан. Если аргумент umask указан, устанавливает umask в указанное значение (которое должно быть восьмеричным числом).
Uniqid
uniqid$result = uniqid();
Возвращает значение, уникальность которого по отношению к другим значениям, возвращаемым повторными вызовами этой функции, гарантирована.
Unlink
unlinkunlink($filename);
Удаляет указанный файл.
Unset
unsetunset($variable);
Сбрасывает значение указанной переменной, которая может быть элементом массива. При применении данной функции к массиву удаляется весь массив.
UrIEncode
urIEncode$string = urlEncode($string)
Эта функция возвращает копию строки string , которая перекодирована для безопасной вставки в URL.
Urldecode
urldecode$decoded_string = urldecode($string);
Возвращает копию строки string, в которой все экранированные спецсимволы URL раскодируются в их значения. Это делается автоматически для всех входящих данных.
Urlencode
urlencode$encoded_string = urlencode($string);
Возвращает копию строки string, в которой все спецсимволы закодированы для использования в URL.
Usleep
usleepusleep($ms);
Задерживет синтаксический анализ скрипта на заданное в ms число микросекунд.
Virtual
virtualvirtual($filename);
Подключает файл filename точно так же, как в обычном файле HTML это делает тег [an error occurred while processing this directive] . Эта функция полезна только вместе с веб-сервером Apache.
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте
Справочник и примеры языка PHP
MsqICIose
msqICIoseint msqICIose ( int sock )
Закрывает подключение к серверу баз данных mSQL.
MsqIConnect
msqIConnectint msqIConnect ( char*host )
Создает подключение к серверу mSQL с указанным именем хоста или IP-адресом. Если в аргументе передать пустое значение, будет создано подключение к серверу mSQL на локальном хосте, с использованием сокетов Unix. Функция возвращает описатель базы данных, применяемый для связи с сервером баз данных. В случае ошибки вернется — 1.
MsqIFetchField
msqIFetchFieldm_field "msqIFetchField ( m_result*result )
Возвращает информацию о полях в результирующем наборе. Каждый успешный вызов функции msqIFetchField вернет структуру m_f ield для очередного поля, пока полей больше не останется, и тогда будет возвращено пустое значение.
MsqIFetchRow
msqIFetchRowm_row msqIFetchRow ( m_result*result )
Выбирает одну запись из результирующего набора. Данные помещаются в структуру m_row, которая является массивом символьных строк. Каждый успешный вызов функции msqIFetchRow возвращает следующую запись до тех пор, пока не будет достигнут конец набора, тогда будет возвращено нулевое значение.
MsqIFreeResult
msqIFreeResultvoid msqIFreeResult ( m_result*result )
Освобождает память, связанную со структурой m_result.
MsqIListDBs
msqIListDBsm_result *msqlListDBs ( int sock )
Возвращает структуру m_result, содержащую имена всех баз данных, доступных на сервере баз данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListFields
msqIListFieldsm_result 'msqIListFields ( int sock , char*tableName )
Возвращает структуру m_result, содержащую имена всех полей в указанной таблице. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqIListlndex
msqIListlndexm_result 'msqIListlndex ( int sock , char*tableName , char*index )
Возвращает структуру m_result, содержащую информацию о заданном индексе. Возвращаемый набор данных будет содержать тип индекса (в настоящее время поддерживается только тип 'avl') и содержащиеся в индексе имена полей. Как и все структуры m_result, значение, возвра щаемое этой функцией, должно быть освобождено с помощью msqlFreеResult после завершения работы с ним.
MsqIListTables
msqIListTablesm_result *msqIListTables ( int sock )
Возвращает структуру m_result, содержащую имена всех таблиц текущей базы данных. Как и все структуры m_result, значение, возвращаемое этой функцией, должно быть освобождено с помощью msqlFreeResult после завершения работы с ним.
MsqINumRows
msqINumRowsint msqINumRows ( m_result*result )
Возвращает число строк в результирующем наборе.
MsqIQuery
msqIQueryint msqlQuery( int sock , char*query )
Выполняет указанный SQL-запрос. В mSQL 2 в возвращаемом значении содержится количество записей, измененных запросом (или выбранных запросом SELECT). В mSQL 1 при успешном выполнении возвращается ноль. В случае ошибки обе версии возвращают — 1.
MsqISelectDB
msqISelectDBint msqISelectDB ( int sock , char*dbName )
Выбирает базу данных для указанного подключения. Базу данных необходимо выбрать до того, как будут посланы любые запросы к серверу баз данных. В случае ошибки возвращается — 1.
MsqIStoreResult
msqIStoreResultm_result *msqlStoreResult()
Сохраняет результат запроса SELECT. Эту функцию вызывают сразу после вызова msqIQuery с запросом SELECT. Результаты запроса сохраняются в структуре m_result. Новые запросы посылаются серверу баз данных только после вызова этой функции. Каждая структура m_result должна быть освобождена с помощью msqlFreeResult по завершении работы с ней.
MSQLCAPI
mSQLCAPIAPI для языка С в mSQL версии 2 не имеет принципиальных отличий от реализации в mSQL 1. Однако были добавлены некоторые новые функции, и было внесено несколько изменений в уже существующие функции. Если функция может быть использована только в mSQL 2, на это обращается особое внимание.
MsqlDataSeek
msqlDataSeekvoid msqlDataSeek ( m_result* result, int pos )
Устанавливает курсор, указывающий функции msqIFetchRow, .какую строку выбирать при следующей операции. Установив курсор в позицию 0, вы переместите его в начало данных. Установив курсор в позицию после последней записи, вы поместите его в конец данных.
MsqlFieldSeek
msqlFieldSeekvoid msqlFieldSeek ( m_result*result , int pos )
Устанавливает курсор, указывающий функции msqlFetchField какое поле выбирать в следующий раз. Установив курсор в позицию после последнего поля, вы, собственно, установите его просто после последнего поля.
MsqlNumFields
msqlNumFieldsint msqlNumFields ( m_result* result )
Возвращает число полей в результирующем наборе.
My sql_affected_ro ws
my sql_affected_ro wsmy_ulonglong mysql_affected_rows(MYSQL*mysql)
Возвращает число записей, измененных последним запросом. При использовании с запросом SELECT эта функция идентична mysql_num_rows (вернет число записей в результирующем наборе). С остальными запросами функция может быть использована после вызова mysql_query, которая послала запрос.
Mysq l_esca pe_strin g
mysq l_esca pe_strin gunsigned int mysql_escape_string(char*to, const char "from, unsigned int
length)
unsigned int mysql_escape_string(char*to, const char *from)
Кодирует строку таким образом, что ее можно безопасно вставить в таблицу MySQL. Первый аргумент - это получающая строка, которая должна быть по крайней мере на один символ больше двойной длины исходной строки, задаваемой вторым аргументом (то есть to >= from*2+l). Если есть третий аргумент, он указывает количество байт, копируемое из исходной строки перед кодированием. Функция возвращает число байт в кодированной строке, исключая цустой символ в конце строки.
Mysq l_get_proto_i nf о
mysq l_get_proto_i nf оunsigned int mysql_get_proto_info(MYSQtmysql)
Возвращает в виде целого числа версию протокола MySQL, используемого в текущем подключении.
Mysql_close
mysql_closevoid mysql_close(MYSQL*mysql)
Завершает соединение с сервером баз данных MySQL. Если при разрыве соединения возникли проблемы, сообщение об ошибке можно посмотреть, используя функцию mysql_err.
Mysql_connect
mysql_connectMYSQL *mysql_connect(MYSQL*mysql, const char*host, const char*user, const char *passwd)
Создает подключение к серверу баз данных MySQL. Первым параметром должна быть предварительно объявленная структура MYSQL. Второй параметр - это имя хоста или IP-адрес сервера MySQL. Если хост задан пустой строкой или как localhost, будет выполнено подключение к серверу MySQL на той же машине. Последние два параметра -это используемые для подключения имя пользователя и пароль. Пароль вводится открытым текстом и не шифруется. Функция возвращает структуру MYSQL, переданную первым аргументом, либо NULL, если соединение не было установлено. (Так как структура содержится в аргументе, единственное применение возвращаемого значения - это проверка успешности подключения.)
Эта функция потеряла значение в последних версиях MySQL, вместо нее следует пользоваться функцией mysql_real_connect.
Mysql_create_db
mysql_create_dbint mysql_create_db(MYSQL*mysql, const char*db)
Создает полностью новую базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL CREATE DATABASE. Следует использовать его с помощью функции mysql_query.
Mysql_data_seek
mysql_data_seekvoid mysql_data_seek(MYSQL_RES*res, unsigned int offset)
Передвигает курсор на определенную запись в наборе записей. Первый аргумент является структурой MYSQL_RES, которая содержит записи. Второй аргумент указывает на номер записи, которую вы хотите найти. Номер первой записи - 0. Эта функция работает, только если данные были выбраны с помощью mysql_store_ result.
Mysql_debug
mysql_debugmysql_debug(char *debug)
Управляет отладочными функциями, если при компиляции клиента была разрешена отладка. MySQL использует отладочную библиотеку Fred Fish, которая имеет слишком много параметров и особенностей, чтобы быть описанной в этой книге.
Mysql_drop_db
mysql_drop_dbint mysql_drop_clb(MYSQL*mysql, const char*db)
Уничтожает базу данных с указанным именем. Функция вернет ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Эта функция потеряла значение в последних версиях MySQL. Теперь MySQL поддерживает оператор SQL DROP DATABASE. Его следует использовать через mysql_query вместо функции mysql_drop_db.
Mysql_dump_debug_info
mysql_dump_debug_infoint mysql_dump_debug_info(MYSQL*mysql)
Эта функция заставляет сервер баз данных записывать отладочную информацию о текущем подключении в свои журнальные файлы. Для использования этой функции у вас должно быть право Process для текущего подключения. Функция вернет ноль в случае успешного выполнения операции и ненулевое значение в случае ошибки.
Mysql_eof
mysql_eofmy_bool mysql_eof(MYSQL_RES* result)
Возвращает ненулевое значение, если больше нет данных в проверяемом наборе записей. При обнаружении ошибки в результирующем наборе возвращается ноль. Эта функция работает, только если результирующий набор был получен функцией mysql_use_result.
Mysql_errno
mysql_errnounsigned int mysql_errno(MYSQL*mysql)
Возвращает номер последней ошибки, связанной с текущим подключением. Если подключение прошло без ошибок, функция возвращает ноль.
Mysql_error
mysql_errorchar *mysql_error(MYSQL*mysql)
Возвращает сообщение о последней ошибке, связанной с текущим подключением. Если при подключении не было ошибок, функция возвращает пустую строку.
Mysql_fetch_field_direct
mysql_fetch_field_directMYSQL_FIELD * mysql_fetch_field_direct(MYSOL_RES * result, unsigned int fieldnr)
Эта функция идентична mysql_fetch_field за исключением того, что вместо цикла по полям вы указываете, какое поле проверить. Номер первого поля в наборе - 0.
Mysql_fetch_field
mysql_fetch_fieldMYSQL_FIELD*mysql_fetch_field(MYSQL_RES* result)
Возвращает структуру MYSQL_FIELD, описывающую доле заданного результирующего набора. Дальнейшие вызовы этой функции вернут информацию о каждом следующем поле, пока поля не закончатся, и тогда будет возвращено нулевое значение.
Mysql_fetch_fields
mysql_fetch_fieldsMYSQL_FIELD *mysql_fetch_fields(MYSQL_RES* result)
Функция идентична mysql_fetch_field за исключением того, что она возвращает массив структур MYSQL_FIELD, содержащих информацию о каждом поле в результирующем наборе.
Mysql_fetch_lengths
mysql_fetch_lengthsunsigned long *mysql_fetch_lengths(MYSQL_RES*result)
Возвращает массив длин каждого поля в текущей записи. В случае ошибки функция возвращает нулевое значение. Вы должны выбрать хотя бы одну запись (используя mysql_fetch_row) перед вызовом этой функции. Эта функция является единственным способом выяснить длину полей переменной длины, таких как BLOB и VARCHAR, перед использованием данных.
Mysql_fetch_row
mysql_fetch_rowMYSQL_ROW mysql_fetch_row(MYSQL_RESresult)
Выбирает следующую запись в наборе и возвращает ее как структуру MYSQL__ROW. Если записей больше нет или в случае ошибки, возвращается нулевое значение. В текущей реализации структура MY.SQI _ROW - это массив символьных строк, который может представлять любые данные.
Mysql_field_seek
mysql_field_seekMYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
Ищет указанное поле в текущей записи результирующего набора. Позиция, установленная этой функцией, используется при вызове mysql_fetch_field. Переданное значение MYSQL_FIELD_OFFSET должно быть значением, возвращаемым функцией mysql_field_tell (или другим вызовом mysql_f ield_seek). Если это значение равно 0, поиск будет осуществляться с начала записи. Функция возвращает позицию курсора перед вызовом функции.
Mysql_field_tell
mysql_field_tellMYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RESresult)
Возвращает значение текущей позиции поля в текущей записи результирующего набора. Это значение используется с mysql_f ield_seek.
Mysql_free_result
mysql_free_resultvoid mysql_free_result(MYSQL_RESresult)
Освобождает память, связанную со структурой MYSQL_RES. Эту операцию следует всегда выполнять при завершении использования структуры этого типа или при других проблемах с памятью.
Mysql_get_client_info
mysql_get_client_infochar *mysql_get_client_info(void)
Возвращает строку с версией библиотеки MySQL, используемой клиентской программой.
Mysql_get_host_jnfo
mysql_get_host_jnfochar *mysql_get_host_info(MYSQL*mysql)
Возвращает строку, содержащую имя хоста сервера баз данных MySQL и тип используемого подключения (например, Unix-сокет или TGP).
Mysql_get_server_info
mysql_get_server_infochar *mysql_get_server_info(MYSQL*mysql)
Возвращает строку, содержащую номер версии сервера баз данных MySQL, используемого в текущем подключении.
Mysql_init
mysql_initMYSQL *mysql_init(MYSQL*mysql)
Инициализирует структуру MYSQL, используемую для создания подключения к серверу баз данных MySQL. Наряду с mysql_real_connect, это является способом инициализации подключения к серверу. Вы передаете этой функции объявленную структуру MYSQL либо пустой указатель, в случае чего структура MYSQL будет создана и возвращена. Созданные этой функцией структуры корректно освобождаются функцией mysql_close. Если для инициализации структуры не хватило памяти, возвращается нулевое значение.
Mysql_kill
mysql_killint mysql_kill(MYSQL*mysql, unsigned long pid)
Пытается завершить поток сервера MySQL с указанным ID процесса (PID). Эта функция возвращает ноль в случае успешного выполнения операции и ненулевое значение в случае неудачи. Чтобы воспользоваться этой функцией, вы должны иметь право Process для текущего подключения.
Mysql_list_dbs
mysql_list_dbsMYSQL_RES*mysql_list_dbs(MYSQL*mysql, const char*wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих баз данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будут возвращены имена всех баз данных. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_fields
mysql_list_fieldsMYSQL_RES *mysql_list_fields(MYSQL*mysql, const char*table, const char *wild)
Возвращает структуру MYSQL_RES, содержащую имена всех существующих полей в указанной таблице, которые удовлетворяют выражению, переданному третьим аргументом. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель, будет возвращен список имен всех полей. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_free_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_processes
mysql_list_processesMYSQL_RES*mysql_list_processes(MYSQL*mysql)
Возвращает структуру MYSQL_RES, содержащую информацию о всех текущих потоках, запущенных на сервере баз данных MySQL. Эта информация может быть использована с mysql_kill для завершения потоков, вызывающих ошибки. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_list_tables
mysql_list_tablesMYSQL_RES*mysql_list_tables(MYSQL*mysql, const char*wild)
Возвращает-структуру MYSQL_RES, содержащую имена всех существующих таблиц в текущей базе данных, которые отвечают выражению, заданному во втором аргументе. Этот аргумент может быть любым стандартным регулярным выражением SQL. Если передать нулевой указатель вместо выражения, будет возвращен список имен всех таблиц. Как и все структуры MYSQL_RES, значение, возвращаемое этой функцией, должно быть освобождено с помощью mysql_f ree_result. Эта функция возвращает нулевое значение в случае ошибки.
Mysql_num_fields
mysql_num_fieldsunsigned int mysql_num_fields(MYSQL_RESresult)
Возвращает число полей, содержащееся в каждой записи указанного результирующего набора.
Mysql_num_rows
mysql_num_rowsint mysqi_num_rows(MYSQL_RESresult)
Эта функция вернет количество записей в возвращаемом наборе записей. Работает корректно, только если набор был получен функцией mysql_store_result. Если была использована функция mysql_use_result, значением, возвращаемым функцией mysql_num_rows, будет количество записей, к которым уже был осуществлен доступ.
Mysql_ping
mysql_pingint mysql_ping(MYSQL*mysql)
Проверяет статус подключения к серверу MySQL. Если подключение не активно, клиент попытается автоматически восстановить его. Эта функция возвращает ноль, если подключение активно, и ненулевое значение в случае ошибки.
Mysql_query
mysql_queryint mysql_query(MYSQL*mysql, const char"query)
Выполняет SQL-запрос, заданный вторым аргументом. Если запрос содержит любые двоичные данные (особенно пустой символ (null)), эту функцию использовать невозможно, и следует пользоваться функцией mysql_real_query. Функция возвращает ноль, если запрос был выполнен успешно, и ненулевое значение в случае ошибки.
Mysql_real_connect
mysql_real_connectMYSQL *mysql_real_connect(MYSQL*mysql, const char*host, const char *user,
const char *passwd, const char*db, uint port, const char*unix_socket, uint client_flag)
Создает соединение с сервером баз данных MySQL. У этой функции есть восемь аргументов:
При использовании запросов, изменяющих данные, возвращать не число измененных записей, а число записей, найденных в таблице.
CLIENT_NO_SCHEMA
Запретить клиенту использование полной формы указания на столбец базы данных database, table.column , чтобы скрыть структуру базы данных.
CLIENT_COMPRESS
Использовать сжатие при соединении с сервером.
CLIENT_ODBC
Указать серверу, что клиент является подключением ODBC.
Mysql_real_query
mysql_real_queryint mysql_real_query(MYSQL*mysql, const char*query, unsigned int length)
Выполняет SQL-запрос, заданный вторым аргументом. В третьем аргументе должна быть указана длина запроса. Указав длину, вы можете использовать в запросе двоичные данные, включая пустые (null) символы. Эта функция действует быстрее, чем mysql_query. Функция возвращает ноль, если запрос был успешно выполнен, и ненулевое значение в случае ошибки.
Mysql_reload
mysql_reloadint mysql_reload(MYSQL*mysql)
Перегружает таблицу привилегий на сервере баз данных MySQL. Для использования этой функции вы должны иметь право Reload для текущего подключения. Функция возвращает ноль, если операцию удалось выполнить, иначе возвращается ненулевое значение.
Mysql_row_tell
mysql_row_tellunsigned int mysql_row_tell(MYSQL_RESresult)
Возвращает значение курсора, используемого функцией mysql_fetch_row при чтении записей из результирующего набора. Возвращаемое этой функцией значение может быть использовано с mysql_row_seek для перехода к определенной записи в наборе.
MySQL С API
MySQL С APIMySQL С API кроме стандартных типов данных языка С использует некоторые свои типы данных. Они определены в заголовочном файле 'mysql.h', который необходимо подключать при компиляции всех программ, использующих библиотеку MySQL.
Mysql_select_db
mysql_select_dbint mysql_select_db(MYSQL*mysql, const char*db)
Изменяет текущую базу данных. Пользователь должен иметь права доступа к новой базе данных. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_shutdown
mysql_shutdownint mysql_shutdown(MYSQL*mysql)
Выключает сервер баз данных MySQL. Для использования этой функции пользователь должен иметь право Shutdown для текущего подключения. Функция возвращает ноль, если операция была успешно выполнена, и ненулевое значение в случае ошибки.
Mysql_stat
mysql_statchar *mysql_stat(MYSQL*mysql)
Возвращает информацию о текущем статусе сервера баз данных. Среди прочей информации содержатся данные о времени работы, количестве запущенных потоков и количестве обрабатываемых запросов.
Mysql_store_result
mysql_store_resultMYSQL_RES *mysql_store_result(MYSQL*mysql)
Читает весь результат запроса и сохраняет его в структуре MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться либо эта функция, либо mysql_use_result. Вы должны вызвать mysql_f ree_result для освобождения структуры MYSQL_RES после завершения работы с ней. Функция возвращает нулевое значение в случае ошибки.
Mysql_thread_id
mysql_thread_idunsigned long mysql_thread_id(MYSQL* mysql)
Возвращает ID потока текущего подключения. Это значение может использовать mysql_kill для завершения подключения в случае ошибки.
Mysql_use_result
mysql_use_resultMYSQL_RES*mysql_use_result(MYSQL*mysql)
Читает результат запроса построчно и позволяет получить доступ к данным через структуру MYSQL_RES. Для доступа к возвращаемым из запроса данным должна использоваться или эта функция, или mysql_store_result. Так как эта функция не читает весь набор данных за один раз, она более быстрая, чем mysql_store_result, и более эффективно использует память. Однако при использовании этой функции вы должны прочесть все записи из набора данных, иначе следующий запрос получит оставшиеся данные. Также вы не сможете выполнять другие запросы до окончания работы с данными из этого запроса. После завершения работы с ними следует вызвать mysql_f ree_result для освобождения структуры MYSQL_RES. Функция возвращает нулевое значение в случае ошибки.
Mysqljnfo
mysqljnfochar *mysql_info(MYSQL*mysql)
Возвращает строку, содержащую информацию о последнем запросе, если этот запрос был одним из указанных ниже. В настоящее время дополнительную информацию через эту функцию выдают следующие SQL-запросы: INSERT INTO (при использовании с оператором SELECT); LOAD DATA INFILE; ALTER TABLE; INSERT INTO TABLE (при использовании с множеством записей). Если последний запрос не имел дополнительной информации (например, это был один из других запросов), функция возвращает нулевое значение.
Mysqljnsertjd
mysqljnsertjdmy_ulonglong mysql_insert_id(MYSQL*mysql)
Вернет последнее число, сгенерированное для поля AUTO_INCREMENT. Данная функция обычно используется сразу после ввода значения в поле AUTO_INCREMENT, чтобы выяснить значение, которое было введено.
Если операция INSERT удалась, переменная
Пример/* Вставить запись в таблицу 'people' */
mysql_query(&mysql, "INSERT INTO people VALUES ('', 'Illyana Rasputin',
16)";
num = fflysql_affected_rows(&mysql);
/* Если операция INSERT удалась, переменная num должна быть равна 1, и -1, если произошла ошибка */
HoMep последней ошибки:
Примерerror = mysql_errno(&mysql);
printf(" HoMep последней ошибки: %d\n", error);
Последняя ошибка была:
Примерprintf(" Последняя ошибка была: '%s'\n", mysql_error(&mysql));
enc_name теперь будет содержать
Примерchar name[15] = "Bob Marley's";
char enc_name[31];
mysql_escape_string(enc_name, name);
/* enc_name теперь будет содержать "Bob Marley\'s" (единичная кавычка
закодирована).
Здесь вы можете проверить информацию
ПримерMYSQL_FIELD*field;
while((field = mysql_fetch_field(results)))
{
/* Здесь вы можете проверить информацию о поле */
}
о третьем поле
ПримерMYSQL_FIELD *field;
/* Получить информацию о третьем поле в наборе записей */
field = mysql_fetch_field_direct(results, 2);
Приписать третье поле переменной
ПримерMYSQL_FIELD 'field; MYSQL_FIELD 'fields;
/* Получить всю информацию о полях в наборе записей */
fields = mysql_fetch_fields(results);
/* Приписать третье поле переменной 'field' */
field = fields[2];
Tpetbe поле имеет длину
Примерunsigned long *lengths;
row = mysql_fetch_row(results);
lengths = mysql_fetch_lengths(results);
printf(" Tpetbe поле имеет длину %d байт\n", lengths[2]);
в третьем поле этой записи:
ПримерMYSQL_ROW row;
row = mysql_fetch_row(results);
printf("Данные в третьем поле этой записи: %s\n", row[2]);
Выбрать первое поле записи
ПримерMYSQL_FIELD field;
/* Перейти к началу записи */
old_pos = mysql_field_seek(results, 0);
/* Выбрать первое поле записи */
field = mysql_field_field(results);
/* Вернуться к исходному состоянию */
mysql_field_seek(results, old_pos);
Выбрать еще три поля
ПримерMYSQL_FIELD fieldl, field2, fieldS;
/* Запомнить текущую позицию */
old_pos = mysql_field_tell(results);
/* Выбрать еще три поля */
field1 = mysqLfield_field(results);
field2 = mysql_field_field(results);
field3 = mysql_field_field(results);
/* Вернуться к исходной позиции */
mysql_field_seek(results, old_pos);
Теперь подключение должно быть завершено
Примерmysql_close(&mysql);
/* Теперь подключение должно быть завершено */
Выполнить операции
ПримерMYSQL_RES "results;
/* Выполнить операции с результатами */
mysql_free_result(results);
Этa программа использует клиентскую библиотеку
Примерprintf(" Этa программа использует клиентскую библиотеку MySQL версии %s\n",
mysql_get_client_info()));
о подключении:
Примерprint("Информация о подключении: %s", mysql_get_host_info(&mysql));
Этo подключение использует протокол соединений
Примерprintf(" Этo подключение использует протокол соединений MySQL версии %d\n",
mysql_get_proto_info());
к серверу MySQL версии
Примерprintf("Bы подключены к серверу MySQL версии %s\n", mysql_get__server_info(&mysql);
Только что был послан запрос
Пример/* Только что был послан запрос LOAD DATA INFILE, загрузивший набор записей из файла
в существующую таблицу */ printf("Результат загрузки данных: %s\n", mysql_info(&mysql));
Ошибка инициализации клиента
ПримерMYSQL mysql;
if (!mysql_init(&mysql)) {
printf(" Ошибка инициализации клиента MySQL\n");
exit(1); }
Мы только что ввели запись
Пример/* Мы только что ввели запись о сотруднике с автоматически генерируемым ID в
таблицу */
id = mysql_insert_id(&mysql);
printf(''Новый сотрудник получил ID %d\n", id);
Завершить поток
Пример/* Завершить поток с номером 4 */
result = mysql_kill(&mysql, 4);
теперь содержит имена всех баз
ПримерMYSQL_RES databases;
databases = mysql_list_dbs(&mysql, (char*)MULL);
/* 'databases' теперь содержит имена всех баз данных на сервере MySQL */
к локальному серверу MySQL, используя
Пример/* Создать подключение к локальному серверу MySQL, используя имя "bob" и
пароль "mypass" */ MYSQL mysql;
if(!mysql_connect(&mysql, "", "bob", "mypass")) {
printf("Oшибкa при подключении!\n");
exit(0); }
/* Если мы дошли сюда, значит, успешно подключились к серверу баз данных*/
теперь содержит имена всех полей
ПримерMYSQL_RES fields;
fields = mysql_list_fields(&mysql, "people", "address%");
/* 'fields' теперь содержит имена всех полей в таблице 'people', начинающихся с 'address' */
MYSQL_RES threads
ПримерMYSQL_RES threads;
threads = mysql_list_processes(&mysql);
теперь содержит имена всех таблиц
ПримерMYSQL_RES tables;
tables = mysql_list_tables(&mysql, "p%");
/* 'tables' теперь содержит имена всех таблиц в текущей базе данных, начинающиеся с 'р' */
d fields in each
Примерnum_fields = mysql_num_fields(results);
printf("There are % d fields in each row\n", num_fields);
Было возвращено
Примерnum_rows = mysql_num_rows(results);
printf(" Было возвращено %d записей \n", num_rows);
попытка повторного
Примерwhile(mysql_ping(&mysql))
printf("Ошибка, попытка повторного подключения...\n");
SELECT FROM people WHERE name
Примерerror = mysql_query(&mysql, " SELECT FROM people WHERE name like
'Bill%'");
if (error) {
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
к серверу на локальном хосте,
Пример/* Подключиться к серверу на локальном хосте, используя стандартные
параметры. */
if (! mysql_real_connect(&mysql, "localhost", "bob", "mypass", "", 0, 0))
{
print "Ошибка подключения!\n";
exit(1); }
SELECT FROM people WHERE name
Примерerror = mysql_real_query(&ntysql, " SELECT FROM people WHERE name like Bill%'",
44);
if (error)
{
printf("Ошибка при выполнении запроса!\n");
exit(1);
}
Пример result = mysql_reload(&mysql);
Примерresult = mysql_reload(&mysql);
Создать новую базу данных
Пример/* Создать новую базу данных 'new_database' */
result = mysql_create_db(&mysql, "new_database");
в любой момент
Примерsaved_pos = mysql_row_tell(results);
/* Теперь в любой момент я могу вернуться к этой записи */
Пример result = mysql_select_db(&mysql, "newdb");
Примерresult = mysql_select_db(&mysql, "newdb");
Пример result = mysql_shutdown(&mysql);
Примерresult = mysql_shutdown(&mysql);
о сервере
Примерprintf("Информация о сервере \n-------\n%s\n", mysql_stat(&mysql));
теперь содержит всю информацию из
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь содержит всю информацию из таблицы'people*/
thread_ld = mysql_thread_id(&mysql);
Примерthread_ld = mysql_thread_id(&mysql);
теперь позволяет получить доступ
ПримерMYSQL_RES results;
mysql_query(&mysql, "SELECT* FROM people");
results = mysql_store_result(&mysql);
/* 'results' теперь позволяет получить доступ к данным таблицы (используя mysql_fetch_row), по одной записи за раз*/
к серверу баз данных на
Пример/* Создать подключение к серверу баз данных на локальном хосте*/
dbh = msqlConnect( (char*)NULL );
if (dbh == -1) {
print " Ошибка при подключении!\n";
exit(1); }
Ошибка при выборе базы данных!
Пример/* Выбрать базу данных "mydatabase" */
result = msqlSelectDB( dbh, "mydatabase" );
if (result == -1) {
print " Ошибка при выборе базы данных! \n";
exit(1); }
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
к последней записи
Пример/* Перейти к последней записи в результате */
mysql_data_seek(results, mysql_num_rows(results)-1);
К данным из этого запроса
Примерm_result *results;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
IK. 897
/* К данным из этого запроса можно обращаться через'results'. Теперь можно выполнять новые запросы */
SELECT FROM people"
Примерm_result "results;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
/* Выполнить работу */
msqIFreeResult(results);
Третье поле первой записи
Примерm_result *results;
m_row "row;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
printf(" Третье поле первой записи в таблице: %s\n", row[2]);
SELECT FROM people"
Примерm_result *results;
m_row Vow;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
row = msqlFetchRow(results);
/* Вернуться к исходной позиции */ msqlDataSeek(results, 0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult(); rows = msqlNumRows(results);
в том же наборе записей
Примерm_field *field;
rows_returned = msqlQuery( dbh, "SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о первом поле
в результирующем наборе */
field = msqlFetchField(results);
/* 'field' теперь содержит информацию о втором поле в том же наборе записей */
SELECT FROM people"
Примерm_result "results; m_field 'field;
rows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
field = msqlFetchField(results);
/* Вернутся к исходной позиции */
msqlFieldSeek(results, .0);
SELECT FROM people"
Примерrows_returned = msqlQuery( dbh, " SELECT FROM people" );
results = msqlStoreResult();
fields = msqlNumFields(results);
Do work
Примерdbh = msqlConnect( (char')NULL );
/* Do work */
msqlClose(dbh);
содержит теперь имена всех баз
Примерdatabases = msqlListDBs(dbh);
/* 'databases' содержит теперь имена всех баз данных на сервере*/
Это обычное использование отладочной библиотеки.
Пример/* Это обычное использование отладочной библиотеки. Информация о деятельности
клиентских программ записывается в файл "debug.out"*/
mysql_debug("d:t:0, debug. out");
содержит теперь имена всех таблиц
Примерtables = msqlListTables(dbh);
/* 'tables' содержит теперь имена всех таблиц текущей базы данных*/
содержит теперь имена всех
Примерfields = msqlListFields(dbh, "people");
/* 'fields' содержит теперь имена всех полей
в таблице'people' */
содержит информацию об индексе
Примерindex = msqll_istIndex(dbh, "people", "idx1");
/* Теперь'index' содержит информацию об индексе 'idx1' в таблице 'people' */
Уничтожить базу данных
Пример/* Уничтожить базу данных 'old_database' */
result = mysql_drop_db(&mysql, "old_database");
Теперь журналы сервера должны содержать
Примерresult = mysql_dump_debug_info(&mysql);
/* Теперь журналы сервера должны содержать информацию о текущем
подключении */
Прочитать до конца набор записей
Пример/* Прочитать до конца набор записей */
while((row = mysql_fetch_row( results.))) {
/'Обработка 7 }
if(!mysql_eof(results))
{
printf("Ошибка. Конец результата не достигнут.\n");
Типы данных
Типы данныхMYSQL
Структура, представляющая соединение с сервером баз данных. Элементы структуры среди прочего содержат имя текущей базы данных и информацию о клиентском подключении.
MYSQL_FIELD
Структура, которая содержит всю информацию, касающуюся отдельного поля таблицы. Из всех типов, созданных для MySQL, это единственная структура, к полям которой можно получить прямой доступ из клиентских программ. Поэтому необходимо знать строение этой структуры:
char *name
Имя поля.
char *table
Имя таблицы, содержащей это поле. Для результирующих наборов, которые не представляют реальных таблиц, это значение пустое.
char *def
Значение по умолчанию этого поля, если таковое существует. Это значение всегда будет null до вызова mysql_list_f ields, после чего в переменной будет корректное значение для полей, у которых есть значение по умолчанию.
еnum enum_field_types type
Тип поля. Он является одним из типов данных MySQL SQL.
unsigned int length
Размер поля, основанный на типе поля.
unsigned int max_length
После вызова mysql_list_fields здесь находится длина максимального значения, содержащегося в текущем результирующем наборе.
unsigned int flags
Ноль или более флагов. В настоящее время определены следующие флаги:
NOT_NULL_FLAG
Если установлен, поле не может содержать значение
NULL. PRI_KEY_FLAG
Если установлен, поле является первичным ключом.
UNIQUE_KEY_FLAG
Если установлен, поле является частью уникального ключа.
MULTIPLE_KEY_FLAG
Если установлен, поле является частью ключа.
BLOB_FLAG
Если установлен, поле имеет тип BLOB или TEXT.
UNSIGNED_FLAG
Если установлен, поле имеет числовой тип и содержит беззнаковое значение.
ZEROFILL_FLAG
Если установлен, поле было создано с флагом ZEROFILL.
BINARY_FLAG
Если установлен, поле имеет тип CHAR или VARCHAR с флагом BINARY.
ENUM_FLAG
Если установлен, поле имеет тип ENUM.
AUTO_INCREMENT_FLAG
Если установлен, поле имеет атрибут AUTO_INCREMENT.
TIMESTAMP_FLAG
Если установлен, поле имеет тип TIMESTAMP.
unsigned int decimals
При использовании с числовым полем выдает длину дробной части.
Для облегчения использования данных MYSQL_FIELD созданы следующие макросы:
IS_PRI_KEY( flags)
Возвращает true, если поле является первичным ключом.
IS_NOT_NULL(flags)
Возвращает true, если поле имеет ограничение NOT NULL.
IS_ELOE(flags)
Возвращает true, если поле имеет тип BLOB или TEXT.
IS_NUM(type)
Возвращает true, если тип поля является числовым.
MYSQL_FIELD_OFFSET
Числовой тип, указывающий на позицию "курсора" в строке (записи).
MYSQL_RES
Структура, содержащая результат команды SELECT (или SHOW). Доступ к данным из запросов следует осуществлять через элемент этой структуры MYSQL_ROW.
MYSQL_ROW
Одна запись из данных, возвращаемых запросом SELECT. Все результаты, полученные от MySQL, хранятся в этом типе (как массив символьных строк).
my_ulonglong
Числовой тип, используемый для кодов возврата MySQL. Значение может находиться в диапазоне от 0 до 1.8Е19, и —1 используется для указания на ошибку.
Справочник и примеры языка PHP
Атрибуты
Атрибуты$db->{AutoCommit}
$handle->{ChopBlanks}
$handle->{CompatMode}
$handle->{InactiveDestroy}
$handle->{LongReadLen}
$handle->{LongTruncOk}
$handle->{PrintError}
$handle->{RaiseError}
$handle->{Warn}
$statement_handle->{CursorName}
$statement_handle->{insertid} (только MySQL)
$statement_handle->{is_blob} (только MySQL)
$statement_handle->{is_key} (только MySQL)
$statement_handle->{is_not_null}
$statement_handle->{is_num}
$statement__handle->{is_pri_key} (только MySQL и mSQL 1.x)
$statement_handle->{length}
$statement_handle->{max_length} (только MySQL)
$statement_handle->{NAME}
$statement_handle->
$statement_handle->{NUM_OF_FIELDS}
$statement_handle->{NUM_OF_PARAMS}
$statement_handle->{table}
$statement_handle->{type}
В DBI.pm API определено несколько атрибутов, которые можно читать и устанавливать в любой момент. Присвоение значения атрибуту может определенным образом изменить поведение текущего соединения. Присвоение любого отличного от нуля значения атрибуту устанавливает его. Присвоение значения 0 атрибуту сбрасывает его. Некоторые значения определены только для конкретных баз данных и непереносимы. Ниже следуют атрибуты, применимые как к описателям баз данных, так и к командам.
$db->{AutoCommit}
Этот атрибут оказывает влияние на поведение серверов баз данных, поддерживающих транзакции. Для mSQL и MySQL он всегда должен быть установлен (значение по умолчанию). Попытка изменить его прерывает выполнение программы.
$handle->{ChopBlanks}
При установке этого атрибута отсекаются все ведущие и замыкающие пробелы в данных, возвращаемых запросом (например, при вызове DBI: : fetch row ). Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию - "сброшен".
$handle->{InactiveDestroy}
Назначение этого атрибута - сохранить процесс при ветвлении (fork), чтобы дочерний процесс мог пользоваться родительским описателем. Его следует установить в родительском или дочернем процессе, но не в обоих. Значение по умолчанию - "сброшен".
$handle-> {PrintError}
При установке этого атрибута выводятся все предупредительные сообщения. При сброшенном атрибуте доступ к ошибкам осуществляется только через $DBI: :errstr. Все производные от данного описатели наследуют значение этого атрибута. Значение по умолчанию -"установлен".
$handle->{RaiseError}
При установке этого атрибута все ошибки возбуждают в программе исключительные ситуации, прерывая ее выполнение, если не определен обработчик '__DIE__'. Все описатели, производные от этого, наследуют значение этого атрибута. Значение по умолчанию -"сброшен".
$handle->{Warn}
При установке этого атрибута выводятся предупредительные сообщения о неудачных приемах программирования (особенно пережитках Perl 4). Сброс этого атрибута отключает предупреждения DBI, что допустимо только при полной уверенности в своем мастерстве. Все производные от данного описатели (например, описатель команды, происходящий от описателя базы данных) наследуют значение этого атрибута. Значение по умолчанию — "установлен".
$statement_handle->{insertid}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает из таблицы текущее значение поля auto_increment (если таковое имеется). Если поле auto_increment не существует, атрибут возвращает undef.
$statement_handle->{is_blob}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно тип BLOB. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_blob} возвращает undef.
$statement_handle->{is_key}
Непереносимый атрибут, определенный только для DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как KEY. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{is_key} возвращает undef.
$statement_handle->{is_not_null}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, определено ли оно как 'NOT NULL' . Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef. Того же результата можно достичь в переносимом виде, используя $statement_handle->{NULLABLE} .
$statement_handle->{is_num}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, имеет ли оно числовой тип. Для описателя команды, созданного не выражением SELECT, $statement_handle->{is_num} возвращает undef.
$statement_handle->{is_pri_key}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. При использовании с DBD::mSQL он оказывает влияние только для серверов mSQLl.x, поскольку mSQL2.x не использует первичные ключи. Атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, является ли оно первичным ключом.
Для описателя команды, созданного не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{length}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Этот атрибут возвращает ссылку на список максимально допустимых размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{length} возвращает undef.
$statement_handle->{max_length}
Это непереносимый атрибут, определенный только для DBD::mysql. Атрибут возвращает ссылку на список фактических максимальных размеров полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, данный атрибут возвращает undef.
$statement_handle->{NAME}
Атрибут возвращает ссылку на список имен полей, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NAME} возвращает undef.
$statement_handle->{NULLABLE}
Этот атрибут возвращает ссылку на массив булевых значений, указывающих для каждого из содержащихся в описателе команды полей, может ли оно иметь значение NULL. Поле, определенное как 'NOT NULL', даст в списке значение 0. Остальные поля дадут значение 1. Для описателя команды, созданного не выражением SELECT, атрибут возвращает undef.
$statement_handle->{NUM_OF_FIELDS}
Атрибут возвращает число колонок данных, содержащихся в описателе команды. Для описателя команды, который был создан не выражением SELECT, $statement_handle->{NUM_OF_FIELDS} возвращает 0.
$statement_handle->{NUM_OF_PARAMS}
Этот атрибут возвращает число меток-заместителей в описателе команды. Метки-заместители обозначаются в команде символом '?'. Для подстановки вместо меток-заместителей надлежащих значений используется функция DBI: : bind_values .
$statement_handle->{table}
Это непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Атрибут возвращает ссылку на список имен таблиц, к которым осуществлялся доступ в запросе. Полезно использовать для SELECT с соединением нескольких таблиц.
$statement_handle->{type}
Непереносимый атрибут, определенный только для DBD::mSQL и DBD::mysql. Он возвращает ссылку на список типов полей, содержащихся в описателе команды. Для описателя команды, созданного не выражением SELECT, $statement_handle->{max_length} возвращает undef. Значениями списка являются целые числа, соответствующие перечислению в заголовочном файле С mysql_com.h из дистрибутива MySQL. Сейчас способа доступа к именам этих типов из DBI не существует. Но доступ к типам возможен через функцию &Mysql: : FIELD_TYPE_ * в Mysql.pm. В DBD::mysql имеется также недокументированный атрибут $statement_handle->{format_type_name} , идентичный $statement_handle- >{type} , за исключением того, что вместо целых чисел возвращает SQL-названия типов. Следует подчеркнуть, что это недокументированный атрибут, и автор DBD::niysql высказал свое намерение убрать его, как только в DBI будет реализована такая же функция.
$statement_handle->{CursorName}
$handle->{l_ongReadLen}
$handle->{l_ongTruncOk}
$handle->{CompatMode}
Все эти атрибуты не поддерживаются в DBD::mSQL и DBD::mysql. Присвоение им значений ничего не даст, а чтение возвратит 0 или undef. Исключение составляет атрибут $statement_handle->{CursorName} . В настоящее время любое обращение к нему "убьет" программу.
DBI available_drivers
DBI::available_drivers@available_drivers = DBI->available_drivers;
@available_drivers = DBI->available_drivers($quiet);
DBI: :available_drivers возвращает список имеющихся драйверов DBD. Функция выполняет это, осуществляя поиск модулей DBD в дистрибуции Perl. Если в аргументе не передано значение true, то при обнаружении двух одноименных модулей DBD выводится предупреждение. В текущем дистрибутиве Msql-Mysql драйвер для mSQL называется 'mSQL', а драйвер для MySQL - 'mysqP.
DBI bind_col
DBI::bind_col$result = $statement_handle->bind_col($col_num, \$col_variable, \%unused);
DBI: :bind_col связывает колонку команды SELECT с переменной Perl. При всяком чтении или изменении колонки изменяется значение соответствующей переменной. Первым аргументом является номер колонки в команде, при этом колонки нумеруются с 1. Второй аргумент — ссылка на переменную Perl, которая должна быть привязана к колонке. Необязательный третий аргумент ссылается на хэш атрибутов. В DBD: :mysql и DBD: :mSQL он не используется. При невозможности в силу каких-то причин сделать привязку функция возвращает неопределенное значение undef.
DBI bind_param
DBI::bind_param$result = $statement_handle->bind_param($param_number, $bind_value);
$result = $statement_handle->bind_param($param_number, $bind_value, $bind_type);
$result = $statenent_handle->bind_param($param_number, $bind_value, \%bind_type);
DBI: : bind_param подставляет в команды действительные значения вместо меток-заполнителей '?' (см. OBI:: prepare). Первый аргумент - номер метки-заполнителя в команде, нумерация начинается с 1 (слева направо). Второй аргумент - подставляемое значение. Необязательный третий аргумент задает тип подставляемого значения. Это может быть скаляр или ссылка на хэш вида { TYPE => &DBI:: SQL_TYPE } , где 'SQL_TYPE' - тип параметра. На момент написания этой книги DBI поддерживал SQL-типы (недокументированные) SQL_CHAR, SQL_NUMERIC, SQL_DECIMAL, SQL_INTEGER, SQL_SMALLINT, SQL_FLOAT, SQL_REAL, SQL_DOUBLE и SQL_VARCHAR. Соответствие их фактическим типам, используемым DBD::mSQL и DBD::Mysql, не документировано. Тем не менее в таблице 21-1 приведен список соответствия на данный момент. Если подстановка невозможна, функция возвращает undef.
DBI bmd_columns
DBI::bmd_columns$result = $statement_handle->bincl_columns(\%unused, @list_of_refs_to_vars);
DBI: : bind_columns привязывает весь список скалярных ссылок к значениям соответствующих полей в выдаче. Первый аргумент функции -ссылка на хэш атрибутов, как в DBI: :bind_col . DBD::mSQL и DBD::mysql не используют этот аргумент. Последующие аргументы должны быть ссылками на скаляры. Скаляры можно с таким же успехом группировать в структуру \($var1, $var2) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.
DBI commit DBI rollback DBI ping
DBI::commit, DBI::rollback, DBI::ping$result = $db->commit;
$result = $db->rollback;
Sresult = $db->ping;
DBI: :commit и DBI: : rollback полезны только при работе с серверами, поддерживающими транзакции. При работе с DBD::mSQL и DBD::mysql они не оказывают никакого эффекта. DBD: :ping пытается проверить, запущен ли сервер базы данных. В DBD::mSQL и DBD::mysql она не реализована.
DBI connect
DBI::connect$db = DBI->connect($data_source, $username, $password);
$db = DBI->connect($data_source, $username, $password, \%attributes);
DBI:: connect требует по крайней мере три аргумента и необязательный четвертый. Через возвращаемый описатель выполняются все операции с сервером базы данных. Первый аргумент является источником данных. Список имеющихся источников можно получить с помощью DBI: :data_sources . Для mSQL и MySQL формат источника данных 'DBI:mSQL:$database:Shostname:Sport' и 'DBI:mysql:Sdatabase:Shostname:Sport' соответственно. Можно опустить :Sport при соединении через стандартный порт. Аналогично можно опустить ': Shostname: Sport' при соединении с сервером на локальном узле с помощью сонета Unix. Имя базы данных указывать обязательно.
Второй и третий аргументы — имя пользователя и пароль для подключения к базе данных. Для mSQL оба аргумента должны иметь значение 'undef'. Если они заданы как 'jndef при работе с MySQL, то у пользователя, запустившего программу, должны быть права доступа к требуемым базам данных.
Последний аргумент необязателен и является ссылкой на ассоциативный массив. Данный хэш позволяет определить некоторые атрибуты соединения. В настоящее время поддерживаются только атрибуты PrintError, RaiseError и AutoCommit. Для сброса им нужно придать значение 0, для установки - какое-либо истинное значение. По умол-чаник) PrintError и AutoCommit включены, a RaiseError - сброшен. Поскольку в данное время ни mSQL, ни MySQL не поддерживают транзакции, атрибут AutoCommit должен быть установлен (более подробно см. Атрибуты).
При неудаче соединения возвращается неопределенное значение undef, и в $DBI;:errstr помещается ошибка.
DBI data_sources
DBI::data_sources@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к использованию в качестве источника данных функцией DBI::connect . Программа заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для MySQL -'mysql'.
DBI do
DBI::do$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused);
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: :prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент -массив значений для подстановки в команду вместо меток-заместителей '?'. Подстановка происходит слева направо. Дополнительно DBI: : do автоматически заключит подставляемые строковые значения в кавычки.
DBI dump_results
DBI::dump_results$neat_rows = DBI::dump_results($statement_handle);
$neat_rows = DBI::dump_results($statement_handle, Smaxlen);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep);
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep, $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно использовать для быстрой проверки результатов запроса во время разработки программы. Единственный обязательный аргумент - описатель команды. Второй аргумент, если имеется, задает максимальный размер полей в таблице, по умолчанию равный 35. Третий аргумент задает строку, используемую для разграничения строк данных, по умолчанию- \n. Четвертый аргумент задает строку, используемую для разделения значений полей в строке, по умолчанию используется запятая. Последний аргумент задает ссылку на глобальный описатель файла, в который выводятся результаты. По умолчанию это STDOUT. Если невозможно прочесть описатель команды, возвращается значение undef.
$DBI err
$DBI::err$error_code = $handle->err;
$DBI::err возвращает код последней по времени ошибки DBI. Код ошибки соответствует сообщению об ошибке, возвращаемому функцией $DBI: :errstr. Переменная $DBI: :err выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
$DBI errstr
$DBI::errstr$error = $handle->errstr;
Эта функция возвращает сообщение о последней происшедшей ошибке DBI. Значение сохраняется до возникновения новой ошибки, когда оно будет заменено. Если во время данного сеанса ошибок не было, функция возвращает undef. Переменная $DBI: :errstr выполняет ту же задачу. Эта функция применима с описателями как баз данных, так и команд.
DBI execute
DBI::execute$rows_affected = $statement_handle->execute;
$rows_affected = $statement_handle->execute(@bind_values);
DBI: : execute выполняет SQL-команду, содержащуюся в описателе команды. Для запроса, не являющегося SELECT, функция возвращает число измененных строк. Функция возвращает -1, если число строк неизвестно. Для запроса типа SELECT при успехе возвращается истинное значение. Если заданы аргументы, они используются для подстановки имеющихся в команде меток-заместителей (см. DBI: : prepare ).
DBI fetchall_arrayref
DBI::fetchall_arrayref$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
DBI fetchrow_array
DBI::fetchrow_array@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
DBI fetchrow_arrayref DBI fetch
DBI::fetchrow_arrayref, DBI::fetch$аrrау_rеГегепсе = $statement_handle->fetchrow_arrayref;
$array_reference = $statement_handle->fetch;
DBI: : fetchrow_arrayref и ее псевдоним DBI: :fetch работают точно так же, как DBI: :fetchrow_array , но возвращают не фактический массив, а ссылку на него.
DBI fetchrow_hashref
DBI::fetchrow_hashref$hash_reference = $statement_handle->fetchrow_hashref;
DBI: :fetchrow_hashref работает так же, как OBI: :fetchrow_arrayref , но возвращает ссылку на ассоциативный, а не на обычный массив. Ключами хэша являются имена полей, а значениями - значения в этой строке данных.
DBI finish
DBI::finish$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
DBI func
DBI::func$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.
_CreateDB
Функция _CreateDB принимает в качестве аргумента имя базы данных и пытается создать эту базу данных на сервере. Для работы с этой функцией необходимо иметь право создания баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
_DropDB
Функция _DropDB принимает в качестве аргумента имя базы данных и пытается удалить с сервера эту базу данных. Данная функция не выводит пользователю сообщений и при успешном выполнении удаляет базу данных навсегда. Для работы с этой функцией необходимо иметь право удаления баз данных. Функция возвращает -1 в случае неудачи и 0 в случае успеха.
DBI neat_list
DBI::neat_list$neat_string = DBI::neat_list(\@listref, $maxlen);
$neat_string = DBI::neat_list(\@listref, $maxlen, $field_seperator);
DBI: :neat_list принимает три аргумента и возвращает аккуратно отформатированную строку, пригодную для вывода. Первый аргумент содержит ссылку на список выводимых значений. Второй аргумент -максимальная длина каждого поля. Последний аргумент - строка, используемая для разделения полей. Для каждого элемента списка вызывается OBI: :neat с использованием заданной максимальной длины. В результирующих строках для разделения полей используется последний аргумент. Если последний аргумент не задан, в качестве разделителя применяется запятая.
DBI neat
DBI::neat$neat_string = DBI: :neat($s'tring);
$neat_string = DBI::neat($string, $maxlen);
DBI: : neat Принимает в качестве аргументов строку и необязательную длину. Затем строка форматируется для аккуратного вывода. Вся строка заключается в одиночные кавычки. Непечатаемые символы заменяются точками. Если задан аргумент длины, все символы после максимальной длины удаляются, а строка заканчивается тремя точками (...). Если длина не указана, по умолчанию используется значение 400.
DBI pmAPI
DBI.pmAPIDBI API является стандартным API баз данных в Perl. Поэтому, хотя MsqPerl и MysqlPerl могут быть более распространены в унаследованных программах, новые программы следует писать с использованием DBI.
DBI prepare
DBI::prepare$statement_handle = $db->prepare($statement);
$statement_handle = $db->prepare($statement, \%unused);
DBI: :prepare принимает в качестве аргумента SQL-команду, которую некоторые модули баз данных переводят во внутреннюю компилированную форму, исполняемую быстрее при вызове DBI: : execute . Эти модули DBD (не DBD::mSQL или DBD::mysql) принимают также ссылку на хэш необязательных атрибутов. Серверы mSQL и MySQL в настоящее время не реализуют концепцию подготовки команд, поэтому DBI: : prepare просто запоминает команду. По желанию вместо значений данных в команду можно вставить любое количество символов '?'. Эти символы известны как метки-заместители (placeholders). Функция DBI: : bind_param осуществляет подстановку действительных значений вместо меток-заместителей. Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
DBI quote
DBI::quote$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в том числе расставляя корректные кавычки по концам строки.
DBI rows
DBI::rows$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды. Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд, включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу все результаты, эта функция надежно работает только для команд, не являющихся SELECT. Это следует учитывать при написании переносимых программ. Функция возвращает —1, если по какой-либо причине число строк неизвестно. Переменная $DBI: : rows выполняет ту же задачу.
DBI state
DBI::state$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI. В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state выполняет ту же задачу.
DBI trace
DBI::traceDBI->trace($trace_level)
DBI->trace($trace_level, $trace_file)
$handle->trace($trace_level);
$handle->trace($trace_level, $trace_file);
DBI:: trace используется в основном для отладки. Если уровень трассировки установлен равным 2, выводится полная отладочная информация. Установка уровня 0 отключает трассировку. DBI->trace осуществляет трассировку для всех описателей, a $handle->trace - только для данного описателя — базы данных или команды. При наличии в DBI- >t race или $handle->trace второго аргумента отладочная информация выводится в указанный файл. Также трассировку можно включить, установив значение переменной окружения DBI_TRACE. Если переменная окружения установлена равной числу (в настоящее время 0 или 2), включается трассировка всех описателей на этом уровне. При другом значении переменной уровень трассировки устанавливается равным 2, а само значение используется в качестве имени файла для вывода отладочной информации.
DBI
DBIDBIdisconnect
DBI-disconnect$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от базы данных перед выходом. При ошибке во время отсоединения возвращается ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Msql connect
Msql::connect$db = Msql->connect;
$db = Msql->connect($host);
$db = Msql->connect($host, Sdatabase);
Устанавливает соединение между вашей программой на Perl и сервером Msql. У этой функции три версии. При отсутствии аргументов соединение устанавливается с сонетом Unix Msql на локальном узле без указания базы данных. Это наиболее эффективное соединение. Если задан один скалярный аргумент, он рассматривается как имя узла или IP-адрес сервера mSQL. Производится соединение с этим сервером без указания базы данных. Если присутствуют два скалярных аргумента, то первый рассматривается как имя узла сервера mSQL, а второй - как имя требуемой базы данных. Программа устанавливает соединение с указанным сервером и выбирает указанную базу данных. Возвращаемое значение является ссылкой на объект, называемый описателем базы данных (database handle). Вся связь с самим сервером базы данных происходит через этот объект. В случае невозможности установить соединение, все версии функции возвращают undef, и в $Msql: :db_errstr помещается сообщение об ошибке.
Msql createdb
Msql::createdb$result = $db->createdb($database);
Msql: : createdb создает базу данных, имя которой принимает в качестве аргумента. Запрос на создание посылается серверу mSQL. Команда посылается от имени пользователя, запустившего CGT-программу. Поэтому для успешного использования в программе CGI последняя должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql database
Msql::database$database = $db->database;
Msql: database возвращает имя текущей базы данных как скаляр. Функция возвращает undef, если нет выбранной базы данных.
Msql dropdb
Msql::dropdb$result = $db->dropdb($database);
Msql: :dropdb принимает в качестве аргумента имя базы данных, которую нужно удалить. Затем она посылает запрос на удаление серверу mSQL. Команда посылается от имени пользователя, запустившего CGI-программу. Поэтому для успешного использования в программе CGI она должна быть запущена пользователем, имеющим право создания баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха. Она не просит подтверждения, и ее результат становится постоянным, поэтому ее следует использовать с крайней осторожностью.
Msql errmsg
Msql::errmsg$error = $db->errmsg:
Msql::errmsg возвращает последнюю по времени ошибку сеанса работы с сервером mSQL. Значение сохраняется, пока не произойдет следующая ошибка, и тогда заменяется новым. Если во время сеанса не произошло ошибки, функция возвращает undef.
Msql getsequenceinfo
Msql::getsequenceinfo($step, $value) = $db->getsequenceinfo($table);
Msql: :getsequenceinfo принимает в качестве аргумента имя таблицы. Функция возвращает шаг и значение последовательности, если она определена в таблице. Если в указанной таблице не определена последовательность, то возвращается неопределенное значение undef, и в Msql: :errmsg помещается ошибка.
Msql host
Msql::hostShost = $db->host;
Msql: :host возвращает имя узла сервера базы данных как скаляр. Не гарантируется возврат канонического или хотя бы полностью квалифицированного доменного имени. В действительности, хотя это и не документировано, Msql:: host возвращает ту самую строку, которая передавалась серверу при вызове Msql::connect . Это согласуется и с тем, что Msql:: host возвращает undef, если использовалась форма Msql: : connect без аргументов.
Msql listdbs
Msql::listdbs@databases = $db->listdbs;
Msql: :listdbs возвращает список имеющихся на сервере баз данных. Если баз данных нет, она возвращает пустой массив.
Msql listfields
Msql::listfields$fields = $db->listfields($table);
Msql:: listf ields принимает в качестве аргумента имя таблицы в текущей базе данных. Она возвращает ссылку на объект, который содержит имена всех полей и некоторые другие сведения. Эта ссылка известна как описатель команды (statement handle). Содержащиеся в нем данные можно извлечь с помощью функций Msql::Statement: :as_string, Msql::Statement: :listindices (только mSQL2.0), Msql: Statement: :numfields , Msql::Statement::table , Msql::Statement::name , Msql::Statement::type , Msql::Statement::isnotnull , Msql::Statement::isprikey , Hsql::Statement::isnum и Msql::Statement: .'length . Если таблицы не существует, функция возвращает неопределенное значение undef, и в Msql: :errmsg помещается ошибка. В описании Msql: :Statement: :fetchhash можно видеть прием, который делает данную функцию несколько устаревшей.
Msql listindex
Msql::listindex@index_handles = $db->listindex($table,$index);
Msql: : listindex принимает в качестве аргументов имена таблицы и индекса и возвращает массив описателей команд, содержащих данные о каждом из индексов. Хотя, согласно документации, эта функция возвращает массив описателей команд, всегда возвращается не более одного описателя. Поэтому, вероятно, можно рассматривать эту функцию как возвращающую скалярный описатель команды. Это описатель в том же стиле, что и возвращаемый Msql::query , и может обрабатываться теми же функциями. Если индекс не существует, возвращается неопределенное значение undef. В возвращаемой таблице данных об индексе одна колонка с именем "Index". В первой строке указан тип индекса, который в mSQL2.0 всегда "avl". Остальные строки суть имена полей, составляющих индекс. Эта функция применима только к mSQL версий 2.0 и выше.
Msql listtables
Msql::listtables@tables = $db->listtables;
Msql: :listtables возвращает массив таблиц, имеющихся в базе данных. Если в базе данных нет таблиц, функция вернет пустой массив.
Msql pm API
Msql.pm APIMsql query
Msql::query$query_output = $db->query($sql_statement);
Msql::query является самой важной и наиболее часто используемой функцией в Msql.pm API. В действительности вы посылаете SQL-запросы серверу базы данных через эту функцию. Функция принимает в качестве аргумента скалярную строку, содержащую SQL-запрос. Если запрос является выражением SELECT, то она возвращает описатель команды, содержащий результаты выполнения запроса. В противном случае функция вернет число строк, измененных запросом. С описателем команды работают те же самые функции, которые были перечислены для Msql:: listf ields (за исключением Msql:: Statement:: listindices ), a также следующие: Msql::Statement: :fetchrow , Msql::Statement::fetched , Msql::Statement::fetchhash , Msql: Statement::numrows , Msql::Statement::maxlength и Msql: Statement: :dataseek . Если по какой-либо причине запрос был неудачным, возвращается значение undef и в Msql: :errmsg помещается ошибка. Каждый описатель команды содержит выходные данные отдельного запроса, поэтому можно послать системе много запросов и работать с каждым описателем команды, когда заблагорассудится.
$Msql QUIET
$Msql::QUIETЕсли переменная $Msql: : QUIET установлена в true, то параметр -w в Perl отключает вывод ошибок. В противном случае все ошибки MsqlPerl будут автоматически посылаться на STDERR. Переменную можно в любой момент сбросить. Функция вывода сообщений об ошибках по -w настолько полезна, что не рекомендуется устанавливать $Msql: : QUIET .
Msql quote
Msql::quote$quoted_string = $db->quote($string);
$truncated_quoted_string = $db->quote($string,$length);
Msql: :quote принимает в качестве аргумента скалярную строку. Она возвращает ту же строку, но с правильной расстановкой кавычек, пригодную для вставки в поле базы данных типа CHAR или TEXT. Более точно, строка заключается в одиночные кавычки, а одиночные кавычки внутри строки предваряются управляющим символом "обратная косая черта". Если задан второй аргумент, результирующая строка укорачивается до заданной длины.
Msql selectdb
Msql::selectdb$db->selectdb($database);
Msql: :selectdb выбирает базу данных на сервере. В случае неуспеха в Msql: :errmsg помещается ошибка. Единственный действенный способ проверить успешность выполнения функции - посмотреть значение $db->database и сравнить его с той базой данных, с которой вы хотели соединиться. В любой момент выполнения программы можно переключиться между базами данных.
Msql shutdown
Msql::shutdown$result = $db->shutdown;
Msql: : shutdown посылает на сервер mSQL команду остановки. Команда посылается от имени пользователя, запустившего программу, поэтому для использования в CGI-программе последняя должна запускаться пользователем, имеющим право остановки сервера баз данных. Функция возвращает -1 при неудаче и 0 в случае успеха.
Msql sock
Msql::sock$sock = $db->sock;
Msql::sock возвращает скаляр, содержащий номер сокета, использованного для подключения к серверу mSQL. Обычно это полезно только при действительно изощренном программировании.
Msql Statement as_string
Msql::Statement::as_string$formatted_table = $statement_handle->as_string;
Msq1: :Statement: :as_string возвращает данные, содержащиеся в описателе команды, в виде аккуратно отформатированной таблицы ASCII. Таблица аналогична тем, которые выводит монитор msql. Программа pmsql, поставляемая с модулем Msql.pm, использует эту функцию для создания своих таблиц.
Msql Statement dataseek
Msql::Statement::dataseek$statement_handle->dataseek($row_number);
Msql: :Statement: :dataseek принимает в качестве аргумента номер строки. Функция переустанавливает данные, так что следующий вызов Msql: :Statement: :fetchrow или Msql: Statement: :fetchhash возвращает данные указанной строки. Если указанный номер строки выходит за границы таблицы, указатель устанавливается на конец таблицы и при следующем вызове будет возвращено неопределенное значение undef. Первая строка таблицы имеет номер 0.
Msql Statement fetchcol
Msql::Statement::fetchcol@column_of_data = $statement_handle->fetchcol($column_number);
Msql: :Statement: :fetched принимает в качестве аргумента номер колонки и возвращает массив всех значений, находящихся в этой колонке. Каждый вызов возвращает значения в колонке в одинаковом порядке, поэтому значения с одинаковым номером элемента находятся в одной строке данных. Первая выдаваемая колонка имеет номер 0. Для выполнения этого вызова модуль должен считать всю таблицу, поэтому, если вы хотите продолжить просмотр таблицы после вызова этой функции, переустановите данные с помощью Msql::Statement: :dataseek . Если задан недопустимый номер колонки, возвращается неопределенное значение undef.
Msql Statement fetchhash
Msql::Statement::fetchhash%hash ='$statement_handle->fetchhash;
Msql::Statement: :fetchhash возвращает текущую строку описателя команды как ассоциативный массив (или хэш). Ключами хэша служат имена полей, а значениями - значения данных текущей строки. Каждое последующее обращение к функции возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef.
Msql Statement fetchrow
Msql::Statement::fetchrow@row_of_data = $statement_handle->fetch row;
Msql:: Statement: : fetch row возвращает очередную строку данных из описателя команды, созданного Msql:.-query. Каждое последующее обращение к Msql: Statement: :fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Элементы в результирующем массиве упорядочены в соответствии с исходным запросом. Если запрос имел вид SELECT*FROM ... , то элементы упорядочиваются в соответствии с последовательностью определения полей в таблице.
Msql Statement isnotnull
Msql::Statement::isnotnull@not_null = $statement_handle->isnotnull;
Msql:: Statement: :isnotnull возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, была ли она определена как 'NOT NULL'. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement isnum
Msql::Statement::isnum@numbers = $statement_handle->isnum;
Msql: : Statement: : isnum возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она числовой. При вызове в скалярном контексте функция возвращает ссылку на массив. "Числовая" означает тип, например, 'INT' или 'REAL', но не число в поле типа 'CHAR' или 'TEXT'.
Msql Statement isprikey
Msql::Statement::isprikey@primary_key = $statement_handle->isprikey;
Msq1::Statement: :isprikey возвращает список булевых значений, указывающих для каждой из содержащихся в описателе команды колонки, является ли она первичным ключом. При вызове в скалярном контексте функция возвращает ссылку на массив. Эта функция всегда возвращает список, состоящий из нулей, при соединении с сервером mSQL 2, поскольку в mSQL 2 не используются первичные ключи. Однако она может быть полезна с серверами mSQL 1, поскольку в них реализованы первичные ключи.
Msql Statement length
Msql::Statement::length@lengths = $statement_handle->length;
Msql::Statement::length возвращает список максимально возможных длин для колонок, содержащихся в описателе команды. Это значения, определенные как максимальные при создании таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив.
Msql Statement listindices
Msql::Statement::listindicesPindices = $statement_handle->listindices;
Msql: : Statement: :listindices возвращает индексы, связанные с какими-либо полями в описателе команды. Поскольку функция непосредственно ищет имена полей, она полезна только для имен, возвращаемых Msql: : listf ields . Если индексы не обнаружены, возвращается неопределенное значение undef. Эту функцию можно использовать только с серверами mSQL 2.0 или последующих версий.
Msql Statement maxlength
Msql::Statement::maxlength@max_lengths = $statement_handle->maxlength; '
Msql::Statement: :maxlength возвращает список фактических максимальных размеров всех полей таблицы. При вызове в скалярном контексте функция возвращает ссылку на массив. Поскольку сервер mSQL прямо не сообщает эти данные, она реализована путем чтения всей таблицы и поиска максимального значения для каждого поля. Поэтому в mSQL эта функция может потребовать много ресурсов, если запрос возвращает большой объем данных.
Msql Statement name
Msql::Statement::name@column_names = $statement_handle->name;
Msql:: Statement:: name возвращает имена колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Как и для Msql::Statement::table , скалярное значение этого списка (в противоположность значению функции при вызове в скалярном контексте) совпадает со значением Msql::Statement::numfields
Msql Statement numfields
Msql::Statement::numfields$number_of_fields = $statement_handle->numfields;
Msql:: Statement: : numf ields возвращает число полей в каждой строке результирующих данных, содержащихся в описателе команды. Во всех выходных данных есть хотя бы одно поле, поэтому данная функция возвращает положительное число для всех определенных описателей команд.
Msql Statement numrows
Msql::Statement::numrows$number_of_rows = $statement_handle->numrows;
Msql: : Statement: : numrows возвращает число строк, содержащихся в описателе команды. Для описателя, который не может содержать строк, например, возвращаемого Msql: :listfields , функция возвращает строку 'N/A.' Если описатель может содержать строки, но их нет - например, он возвращен SELECT, для которого не найдено соответствия, -функция возвращает 0.
Msql Statement table
Msql::Statement::table@tables = $statement_handle->table;
Msql: :Statement: :table возвращает список таблиц, связанных с колонками данных, содержащимися в описателе команды. (См. выше в Msql: : Statement: : isnum пример использования ссылки на массив.) Даже если запрос использовал только одну таблицу, для каждой колонки есть один элемент. Побочным эффектом является то, что скалярное значение массива, возвращаемого $statement_handle->table , совпадает со значением $statement_handle->numfields .
Msql Statement type
Msql::Statement::type@column_types = $statement_handle->type;
Msql: : Statement: : type возвращает типы колонок данных, содержащихся в описателе команды. При вызове в скалярном контексте функция возвращает ссылку на массив. Сам по себе этот массив не очень интересен для большинства пользователей (в текущей реализации это массив целых чисел), однако эти значения можно сравнивать со встроенными значениями, определенными в Msql.pm, такими как &Msql: : CHAR_TYPE и &Msql: : INT_TYPE. Один из путей использования этих данных - создание массива с читаемыми названиями, соответствующими предустановленным типам. Этот метод был продемонстрирован в главе 10 "Perl". Другой способ показан ниже.
Msql *_TYPE
Msql::*_TYPEMsql.pm предоставляет следующие функции, соответствующие типам данных mSQL:
&Msql::CHAR_TYPE &Msql::INT_TYPE &Msql::REAL_TYPE &Msql::IDENT_TYPE
&Msql::TEXT_TYPE &Msql::IDX_TYPE &Msql::NULL_TYPE &Msql::DATE_TYPE
&Msql::UINT_TYPE &Msql::MONEY_TYPE &Msql::TIME_TYPE &Msql::SYSVAR_TYPE
$Msql VERSION
$Msql::VERSIONВ переменной $Msql:: VERSION содержится номер версии модуля Msql.pm.
MSQL
MSQLMysql connect
Mysql::connect$db = Mysql->connect($host, Sdatabase, $user, $password);
Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.
Mysql errno
Mysql::errno$error_number = $db->errno;
Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .
Mysql FIELD_TYPE_*
Mysql::FIELD_TYPE_*Помимо функций типов данных Mysql: :TYPE_ *, идентичных функциям Msql::TYPE *, Mysql.pm предоставляет следующие дополнительные функции типов данных:
&Mysql::FIELD_TYPE_BLOB &Mysql::FIELD_TYPE_CHAR &Mysql::FIELD_TYPE_DECIMAL &Mysql::FIELD_TYPE_DATE &Mysql::FIELD_TYPE_DATETIME &Mysql::FIELD_TYPEJ)OUBLE &Mysql::FIELD_TYPE_FLOAT &Mysql: : FIELD_TYPE_INT24 &Mysql::FIELD_TYPE_LONGLONG &Mysql::FIELD_TYPE_LONG_BLOB &Mysql::FIELD_TYPE_LONG &Mysql::FIELD_TYPE_MEDIUM_BLOB &Mysql::FIELD_TYPE_NULL &Mysql::FIELD_TYPE_SHORT &Mysql::FIELD_TYPE_STRING &Mysql::FIELD_TYPE_TIME &Mysql::FIELD_TYPE_TIMESTAMP &Mysql::FIELD_TYPE_TINY_BLOB &Mysql::FIELD_TYPE_VAR_STRING
Mysql pm API
Mysql.pm APIMysql.pm API идентичен Msql API (с заменой всюду "Msql" на "Mysql"), за исключением следующих отличий:
Mysql query
Mysql::queryВ отличие от MsqLpm, Mysql.pm возвращает описатель команды даже для запросов, не являющихся командами SELECT, например, для запросов INSERT, UPDATE и DELETE.
Mysql Statement affectedrows
Mysql::Statement::affectedrows$number_of_affected_rows = $statement^handle->affectedrows;
Msql: :Statement: :affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.
Mysql Statement info
Mysql::Statement::info$info = $sth->info;
Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.
Mysql Statement insertid
Mysql::Statement::insertid$new_id = $statement_handle->insertid;
Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.
Mysql Statement isblob
Mysql::Statement::isblob@blobs = $statement_handle->isblob;
Mysql: : Statement:: isblob возвращает список булевых значений, указывающих на то, имеют ли содержащиеся в описателе команды поля тип BLOB. При вызове в скалярном контексте функция возвращает ccылку на массив.
MySQL
MySQL| SQL_NUMERIC |
|
FIELD TYPE LONG FIELD TYPE LONGLONG FIELD_TYPE_SHORT |
||
| SQL_DECIMAL |
|
FIELD_TYPE_DECIMAL |
||
| SQLJNTEGER |
INT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL SMAL-LINT |
UINT_TYPE |
FIELD_TYPE_INT24 |
||
| SQL_FLOAT |
|
FIELD_TYPE_FLOAT |
||
| SQL_REAL |
REAL TYPE LAST_REAL_TYPE |
FIELD JTYPE_DOUBLE |
||
| SQLJDOUBLE |
|
FIELD_TYPE_DOUBLE |
||
| SQL_VARCHAR |
TEXT_TYPE |
FIELD_TYPE_TINY BLOB FIELD_TYPE_MEDIUM BLOB FIELD TYPE BLOB FIELD TYPE LONG BLOB FIELD TYPE VAR STRING FIELD TYPE STRING |
||
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect; $db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $query3 = "UPDATE myothertable SET name='Bob' WHERE name='Joe'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $myothertable_input = $db->query($query3);
# $mytable_output содержит результаты запроса к 'mytable'
# $myothertable_output содержит результаты запроса к 'myothertable'
print "Обновление 'myothertable' повлияло на имена в $myothertable_input
\n";
Отключить сообщения об ошибках. Действует,
Примерuse Msql;
# Отключить сообщения об ошибках. Действует, только если сценарий
# запущен с '-w'.
$Msql::QUIET = 1;
# Выполняем многословную часть...
# Снова включаем сообщения об ошибках. $Msql::QUIET = undef;
Tenepb значение строки
Примерuse Msql;
my $db = Msql->connect;
my $string = "Это ' (одинарная кавычка)";
my $qstring = $db->quote($string);
print qq% Tenepb значение строки "'Это\\' (одинарная кавычка)'" : $qstring\n%;
Выбранной базой данных является
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
# Выбранной базой данных является 'mydata'
if ($db->database ne 'mydata') {
wаrn('Базу данных выбрать не удалось!'); }
$db->selectdb('myotherdata');
# Теперь выбрана база данных 'myotherdata'
Пора закрывать базу
Примерuse Msql;
my $db = Msql->connect;
# Пора закрывать базу данных...
my $result = $db->shutdown;
die "Команда не выполнена!" if $result — -1;
print "Сервер остановлен.\n";
в гораздо более приемлемом виде,
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
print "Моя таблица:\n", $mytable_output->as_string;
# Выводится вся таблица в гораздо более приемлемом виде,
# чем в примере Msql:[Statement:ifetchhash.
Теперь указатель установлен на начало
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Squery = "SELECT name, date FROM myothertable";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcol(0);
my @dates = $myothertable_output->fetchcol(1);
# Теперь указатель установлен в конце таблицы.
$myothertable_output->dataseek(0);
# Теперь указатель установлен на начало таблицы,
print "Это первая строка данных: ", $myothertable_output->fetchrow, "\n".
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->query($query);
my @names = $myothertable_output->fetchcor(0);
# @names содержит теперь все имена.
my @dates = $myothertable_output->fetchcol(1);
# ©dates содержит теперь все даты.
for (0..$#names) {
print "Row $_: $names[$_], $dates[$_]\n"; }
fields содержит теперь имена всех
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->query($query);
my %first_data_row = $mytable_output->fetchhash;
my @fields = keys %first_data_row;
# @ fields содержит теперь имена всех полей. В результате, фактически нет
# нужды использовать Msql::listfields, поскольку ее данные и многие
If другие можно получить через описатель команды, возвращаемый
# Msql::query.
my (%data_row);
print ]oin("", ©fields), "\n';
print "-"x70;
print join("", values(%first_data_row);
print join("", values(%data_row)) while %data_row = $mytable_output-
>fetchhash;
# Таким образом распечатывается вся таблица, хотя и в невыравненном
# формате.
SELECT name, date FROM myothertable
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $query1 = "SELECT * FROM mytable";
my $query2 = " SELECT name, date FROM myothertable WHERE name LIKE
'Bob%'";
my $mytable_output = $db->query($query1);
my $myothertable_output = $db->query($query2);
my $i = 0;
# Чтение строк данных будет продолжаться,
# пока их больше не останется.
while (my(@mytable_rows)=$mytable_output->fetcnrow) {
print "Строка ",$i++,": ".join(', ',@mytable_rows)."\n";
# Если неизвестна структура таблицы 'mytable',
# нельзя узнать число элементов в @mytable_rows или их порядок.
}
my (Sname, $date);
# Это первая строка данных в $myotrertable_output.
($name, $datc) = $myothertaPle_output->fetchrow;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrbw;
# и т.д....
не может быть
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mydata");
my @names = $output->name;
my @not_null = $output->isnotnull;
for (0..$#not_null) {
print "$names[$_] не может быть null\n"
if $not_null[$_]; }
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $dD->query(" select name, date from myothertable");
print "Name является числом"
if $output->isnum->[0];
print "Date является числом"
if $output->isnum->[1];
В запросе участвует не меньшее
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output-= $db->query("select * from mytable");
my @prikeys = $output->isprikey;
my $number_of_prikeys = scalar @prikeys;
print "В этом описателе команды $number_of_prikeys первичных ключей. ",
" В запросе участвует не меньшее число различных таблиц, поскольку ".
"в каждой таблице может быть только один первичный ключ\n";
у вас есть одно
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select- * from mytable");
my @types = $output->type;
my @lengths = $output->length;
for (0..$#types) {
if ($types[$_] == &Msql: :CHAR_TYPE and $lengths[$_] > 1000000) {
print "В этой таблице у вас есть одно о-очень большое поле CHAR!\";
} }
есть следующие индексы:
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my ©indices = $mytable_fields->listindices;
print "B 'mytable' есть следующие индексы: " . join(", ",@indices) .
"\n;
Самое длинное имя имеет длину
Примерuse Msql;
$db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select name, date from myothertable');
print " Самое длинное имя имеет длину " . $ouput->maxlength->[0] . " символов,\n";
список колонок
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my @column_names = $output->names;
# Теперь @column_names - список колонок 'mytable'
Всего имеется Snumrows строк данных.
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query("select * from mytable");
my $numfields = $output->numfields;
my $numrows = $output->numrows;
print "В каждой строке таблицы 'mytable' $numfields полей \n";
print " Всего имеется Snumrows строк данных. Поэтому 'mytable'\n";
print "содержит" . ($numfields*$numrows) . " элементов данных.\n";
my Soutput
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query("select * from mytable");
my $numrows = '$output->numrows;
print "B 'mytable' содержится $numrows строк данных\n";
name from myothertable, mythirdtable where
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my Soutput = $db->query('select myothertable. name, myothertable.date,
mythirdtable. name from myothertable, mythirdtable where myothertable. name
= mythirdtable. name');
my @tables = $output->table;
# @tables содержит теперь ('myothertable', 'myothertable', 'mythirdtable')
select name, date from
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $output = $db->query(" select name, date from myothertable");
my ($name_type, $date_type) = $output->type;
for ($name_type) {
$_ eq &Msql: :CHAR_TYPE and do {
print ''name является CHAR';
last;
} $_ eq &Msql::INT_TYPE and do {
print 'name является INT'; last; } # и т.д....
}
# повторить для $date_type
Я подключен
Примерuse Msql;
my $db = Msql->connect;
my $sock = $db->sock;
print " Я подключен к сокету $sock.\n";
types дает доступ ко всем
Примерuse Msql;
%types = (
'CHAR' => &Msql::GHAR_TYPE, 'INT' => &Msql::INT_TYPE, 'REAL' => &Msql::REAL_TYPE, 'SYSVAR' => &Msql::SYSVAR_TYPE, 'TIME' => &Msql::TIME_TYPE, 'MONEY' => &Msql::MONEY_TYPE, 'UINT' => &Msql::UINT_TYPE, 'TEXT' => &Msql::TEXT_TYPE, 'NULL' => &Msql::NULL_TYPE, 'DATE' => &Msql::DATE_TYPE, 'IDENT' => &Msql::IDENT_TYPE, 'IDX' => &Msql::IDX_TYPE,
);
# $types{'CHAR'} является теперь легкодоступным псевдонимом для
# &Msql::CHAR_TYPE. Наличие значений в % types дает доступ ко всем
# удобным функциям работы с хешами, такими как keys() и values().
Вы используете
Примерuse Msql;
print " Вы используете Msql.pm версии $Msql::VERSION.\n";
Теперь описатель базы данных соединен
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');
# Теперь описатель базы данных соединен с локальным сервером MySQL и
# использует базу данных 'mydata1.
# Использовано имя пользователя 'webuser' для
# соединения с паролем 'super_secret_squirrel'.
В этом запросе есть синтаксическая
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata','webuser', 'super_secret_squirrel');
# В этом запросе есть синтаксическая ошибка...
my $output = $db->query( 'SELECT * from mydata');
if (not $output) {
print "Ошибка " . $output->errno . ": " . $output->errfnsg . "\n"; }
SELECT name, data from
Примерuse Mysql;
my $db = Mysql->connect(undef, 'mydata');
my Soutput = $db->query(" SELECT name, data from myothertable");
if ($output->type->[0] = &Mysql::FIELD_TYPE_STRING) {
print "Name является STRING.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(" UPDATE mytable set name='bob' where
name='joe'");
print $output->affectedrows . " строк обновлено.\n";
Результат работы LOAD DATA:
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query("LOAD DATA INFILE 'mydata.dat' INTO TABLE mytable");
my $info = $output->info($output);
print " Результат работы LOAD DATA: $info\n";
INSERT into mytable
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $output = $db->query(
" INSERT into mytable (id, name, date) VALUES ('','bob', 'today')";
my $new_id = $output->insertid;
print "Bob был введен с ID, равным $new_id.\n";
SELECT name, data from
Примерuse Mysql;
$db = Mysql->connect(undef,'mydata');
my $output = $db->query(' SELECT name, data from myothertable');
if ($output->isblob->[0]) {
print "Name является полем BLOB.\n"; }
else {
print "Name не является полем BLOB.\n"; }
UPDATE mytable set
Примерuse Mysql;
my $db = Mysql->connect(undef,'mydata');
my $outpuf= $db->query(" UPDATE mytable set name='joe' where
name='bob' ");
# $output является описателем команды.
n Ho нас интересуют только
Примерuse DBI;
my @drivers = DBI->available_drivers;
print "Доступны следующие драйверы:\n" . join("\n",@drivers) . "\ n Ho нас интересуют только mSQL и mysql. :)\n";
SELECT name, date FROM
Примерuse OBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
my ($name, $date);
$myothertable_output->bind_col(1,\$name,undef);
$myothertable_output"bind_col(2, \$date, undef);
# Теперь $name и Sdate привязаны к соответствующим полям выходных данных.
$myothertable_output->execute;
while ($myothertable_output->fetch) {
# Каждый раз $name и $date автоматически изменяются.
print "Имя: $name Дата: $date\n"; }
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable";
my $myothertable_oulput = $db->prepare($query);
my ($name, $date);
$mynfhertable_outpul->bind_columns(undef, \($name, $daLe));
# $name и $date теперь привязаны к соответствующим полям в выдаче,
$myothertable_output->execute;
while ($myothertable_output->fetch)
{
# $name и $date каждый раз автоматически изменяются.
print "Имя: $name Дата: $date\n";
}
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBD:msql:mydata','me','mypass');
my Sstatement = $db->prepare(
" SELECT name, date FROM myothertable WHERE name like ? OR name like ?");
$statement->bind_param(1,'J%','SQL_CHAR');
$statement->bind_param(2,'%oe%', { TYPE => &DBI::SQL_CHAR });
# Теперь команда будет такой:
# SELECT name, date FROM myothertable WHERE name like 'J%' or name like
'%oe%'
При соединении использовались имя пользователя
Примерuse DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'.
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 });
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
Должны быть установлены
Примерuse DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n";
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
rows_affected Joe заменены на
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$ rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, ("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
mydata' разорвано. Соединение
Примерuse DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение ' mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
SELECT name, date FROM
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my Squery = " SELECT name, date FROM myothertable";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
print DBI::dump_results($myothertable_output);
# Вывести результаты в аккуратной таблице.
open(MYOTHERTABLE, ">>myothertable");
print DBI: :dump_results($iriyothertable_output,
undef,undef,undef,\*MYOTHERTABLE);
# Снова вывести результаты в файл 'myothertable,'.
Этот запрос имеет синтаксическую
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
# Этот запрос имеет синтаксическую ошибку...
my Soutput = $db->prepare('SLECT * from mydata');
$output->execute;
if (not $output) {
print "Error $DBI:err: $DBI:errstr\n"; }
Boj последняя ошибка DBI:
ПримерUse DBI;
my $db = DBI->connect('DBI:mysql:mydata',
'wcbuscr','super_secret_squirrel');
my $error = $db->errstr;
warn(" Boj последняя ошибка DBI: $error");
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('OBI:mSQL:mydata',undef,undef);
my $statement_handle = $db->prepare("SELECT * FROM mytable");
my $statement_handle2 = $db->prepare(" SELECT name, date FROM myothertable WHERE name like ?");
$statement_handle->execute;
# Выполнена первая команда.К значениям можно
# обращаться через описатель.
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
data является ссылкой на массив
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $ data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my ($name, $date);
# Это первая строка из $myothertable_output.
($name, $date) = $myothertable_output->fetchrow_array;
# Это следующая строка...
($name, $date) = $myothertable_output->fetchrow_array;
# И еще одна...
my @name_and_date = $myothertable_output->fetchrow_array;
# и т.д.....
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata', undef, undef);
my $query = " SELECT name, date FROM myothertable WHERE name LIKE -Bob%'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $name1 = $myothertable_output->fetch->[0]
# Это поле 'name' из первой строки данных,
my $date2 = $myothertable_output->fetch->[1]
# Это поле 'date' из второй строки данных.
my ($name3, $date3) = @{$myothertable_output->fetch};
# Это целиком третья строка данных.
$myothertable_output->fetch
# возвращает ссылку на массив. Можно 'преобразовать' ее в действительный
# массив, используя конструкцию @{}.
field_names содержит теперь имена всех
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
my %row1 = $mytable_ouput->fetchrow_hashref;
my @field_names = keys %row1;
# @ field_names содержит теперь имена всех полей в запросе.
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
mytable_output или подготовить для
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $ mytable_output или подготовить для него
# другую команду SQL.
tables содержит теперь список таблиц
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my @tables =.$db->func('„List-Tables');
# @ tables содержит теперь список таблиц в 'mydata'.
Это очень, очень длинная строка,
Примерuse DBI;
my $string = " Это очень, очень длинная строка, в которой много чего написано. ";
my$neat_string = OBI: :neat($string,14);
# Теперь $neat_string такая: 'Это очень, оче...
neat_string такая:
Примерuse DBI;
my @list = (' Bob', 'Joe', 'Frank');
my $neat_string = DBI::neat_list(\@list, 3);
# Теперь $ neat_string такая: 'Bob', 'Joe', 'Fra...
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $statement_handle = $db->prepare('SELECT * FROM mytable');
# Теперь эта команда готова к выполнению.
My $statement_handle = $db->prepare(' SELECT name, date FROM myothertable WHERE name like ?');
# Эта команда будет готовя к выполнению после подстановки # с использованием функции DBI::bind_param.
Теперь обе строки годятся для
Примерuse DBI;
my $db1 = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $db2 = DBI->connect('DBI:mysql:myotherdata','me','mypassword');
my $string = "Sheldon's Cycle";
my $qs1 = $db1->quote($string);
# $qs1: 'Sheldon\'s Cycle' (включая наружные кавычки)
my $qs2 = $db2->quote($string);
# $qs2 : 'Sheldon's Cycle' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
SELECT name, date FROM myothertable
Примерuse DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = " SELECT name, date FROM myothertable WHERE name='Bob'";
my $myothertable_output = $db->prepare($query);
$myothertable_output->execute;
my $rows = $myotnertable_output->rows;
print "В таблице 'myothertable' есть $rows строк 'Воb'\n";
BoT последняя по времени ошибка
ПримерUse OBI;
my $db = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirгеl');
my $sql_error = $db->state;
warn(" BoT последняя по времени ошибка DBI SQL: $sql_error");
Включена трассировка для всех описателей
Примерuse DBI;
my $db1 = DBI->connect('DBI:mysql:mydata',
'webuser','super_secret_squirrel');
my $db2 = DBI->connect('DBI:mSQL:myotnerdata',undef,undef);
DBI >trace(2);
# Включена трассировка для всех описателей на уровне 2.
$db2->trace(0);
# Отключена трассировка для $db2, но продолжает действовать для $db1
$db1->trace(2,'DBI.trace');
# Теперь включена трассировка для всех описателей на уровне 2, выдача
# посылается в файл 'DBI.trace'.
fields содержит теперь список
Примерuse DBI;
my $db = DBI->connect('mysql:mydata','me','mypassword');
$db->{RAISE_ERROR} = 1;
# Теперь любая ошибка DBI/DBD убьет программу.
my $statement_handle = $db->prepare('SELECT * FROM mytable');
$statement_handle->execute;
my @fields = @{$statement_handle->{NAME}};
# @ fields содержит теперь список с именами всех полей в 'mytable'.
с сокетом Unix локального узла
Примерuse Msql;
# Соединение с сокетом Unix локального узла ' my $db = Msql->connect;
# Или...
# Соединение с узлом 'www.myserver.com' без указания, базы данных
mу $db = Msql->connect('www.myserver.com');
# Или...
# Соединение с сервером 'www.myserver.com' и выбор базы данных 'mydata'
mу $db = Msql->connect('www.myserver.com','mydata');
База данных не
Примерuse Msql;
my $db = Msql->connect;
my $my_new_database = 'mynewdata';
my $result = $db->createdb($my_new_database);
die " База данных не создана!"
if $result == -1;
print "$my_new_database создана.\n";
Здесь должно быть выведено
Примерuse Msql;
my $db = Msql->connect('www.myserver.com','mydata');
my $database = $db->database;
print " Здесь должно быть выведено 'mydata': $database\n";
Команда не
Примерuse Msql;
my $db = Msql->connect;
my $result = $db->dropdb('mydata');
die " Команда не выполнена!"
if result == -1;
print "'mydata' потеряна навсегда.\n";
Вот последняя по времени ошибка
Примерuse Msql;
my $db = Msql->connect;
my Serror = $db->errmsg;
warn(" Вот последняя по времени ошибка mSQL: $error");
B mytable не задана последовательность"
Примерuse Msql;
my $db = Msql->connect;
my ($step, $value) = $db->getsequenceinfo('mytable');
die " B mytable не задана последовательность" if not $step;
print "B mytable есть последовательность со значением $value и шагом
$step\n";
вы видите
Примерuse Msql;
my $ijh - Msql->connect( 'www.myserver.com');
my $host = $db->host;
print "Вероятно, вы видите 'www.myserver.com': $host\n";
Имеющиеся базы
Примерuse Msql;
my $db = Msql->connect;
my @databases = $db->listdbs;
print " Имеющиеся базы данных:\n\n" . join("\n",@databases);
fields явяется ссылкой на все
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $fields = $db->listfields('mytable');
warn ("Проблемы с 'mytable-': " . $db->errmsg)
if (not $fields);
# $ fields явяется ссылкой на все поля в таблице 'mytable'.
print "mytable содержит следующие поля:\n";
print $fields->as_string;
type_of_index содержит теперь тип индекса
Примерuse Msql;
my $db = Msql->connect;
$db->selectdb('mydata');
my $mytable_fields = $db->listfields('mytable');
my @indices = $mytable_fields->listindices;
# Я знаю имена всех индексов.
foreach (@indices) {
my $index_info_handle = $db->listindex('mytable',$_);
my (@index_info) = $index_info_handle->fetchcol(0);
my $type_of_index = shift(@index_info);
# $ type_of_index содержит теперь тип индекса (вероятно, 'avl'),
# a @index_info содержит теперь список полей в индексе.
database есть следующие
Примерuse Msql;
my $db = Msql->connect;
my @tables = $db->listtables;
my $database = $db->database;
print "B $ database есть следующие таблицы:\n\n" join("\n",@tables);
Соответствие типов SQL
Таблица 21-1. Соответствие типов SQLUse Msql
use Msqluse Msql;
Это объявление должно быть в любой программе Perl, использующей модуль Msql.pm.
Use
useuse DBI;
Следует объявлять во всех программах Perl, использующих модуль DBI.
Установка
УстановкаДля использования интерфейсов mSQL и MySQL к модулям DataBase Dependent/DataBase Independent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты:
Perl 5
В вашей системе должны быть установлены работающие экземпляры Perl 5. Ко времени написания этой книги последний релиз Perl имел номер 5.005_02. Следует пользоваться по меньшей мере Perl 5.004, поскольку в более ранних версиях были ошибки, связанные с защитой. Более подробные сведения о Perl, включая адреса для загрузки, можно найти по адресу: http://www.perl.com.
DBI
Независимую от базы данных часть модуля DBI/DBD можно загрузить из Comprehensive Perl Archive Network (CPAN). На момент написания книги последней версией был DBI-0.90. Он находится на http://www.perl.com/CPAN/authors/id/TIMB/DBI/DBI-l.06.tar.gz.
Data::ShowTable
Модуль Data::ShowTable упрощает отображение больших объемов данных. Это требуется для модулей Msql-Mysql. Последняя версия - Data-ShowTable-З.З, ее можно найти по адресу: http://www.perl.com/CPAN/authors/id/AKSTE/Data-ShowTable-3.3.tar.gz.
mSQL и /или MySQL
В главе 3 "Установка" подробно рассказано о том, как получить и установить серверы баз данных mSQL и MySQL.
Компилятор С и сопутствующие средства
Для модулей MsqlPerl и MysqlPerl необходим ANSI-совместимый компилятор С, а также обычные сопутствующие средства, такие как make, Id и т. д. Вам должно хватить тех средств, с помощью которых вы собрали Perl. Если у вас нет этих инструментов, компилятор GNU С и все необходимые поддерживающие программы можно бесплатно получить на ftp://ftp.gnu.org/pub/gnu/.
В настоящее время модули Msql-Mysql поддерживает Йохен Видман (Jochen Wiedmann), чье ID в CPAN выглядит как JWIED. Поэтому текущие модули Msql-Mysql всегда можно найти на http://www.perl.com/ authors/id/ JWIED. На момент написания книги текущей версией была Msql-Mysql-modules-1.2017.tar.gz.
После загрузки пакета разархивируйте его:
tar xvzf Msql-Mysql-modules-1.2017.tar.gz
cd Msql-Mysql-modules-1.2017
В каталоге дистрибутива есть файл INSTALL, содержащий несколько советов по установке. Сначала нужно выполнить файл Makefile.PL:
perl Makefile.PL
Эта команда сначала спрашивает, желаете ли вы установить модули для mSQL, MySQL или те и другие. Можно установить модули для любого установленного вами сервера баз данных.
После проверки системы программа запрашивает местоположение установки mSQL. Это каталог, содержащий подкаталоги lib и include, в которых расположены библиотеки и включаемые файлы mSQL. По умолчанию этим каталогом является /usr/local /Hughes, но обязательно проверьте это, поскольку во многих системах используется /usr/local или даже /usr/local/Minerva.
Затем сценарий установки запрашивает путь к MySQL. Как и в случае mSQL, это каталог, содержащий надлежащие подкаталоги lib и include, по умолчанию - /usr/local. Это расположение верно для большинства установок, но следует обязательно проверить, не используются ли другие каталоги.
После установки сценарий создает соответствующие make-файлы и завершается. Затем нужно запустить make и скомпилировать файлы.
make
Если вы правильно установили Perl, mSQL и/или MySQL, то команда make должна пройти без ошибок. После завершения ее работы будут созданы все модули, и единственное, что останется - это протестировать и установить их.
make test
Во время выполнения по экрану пробегает ряд отладочных имен, за каждым из которых должно следовать . . . ok. И наконец, нужно установить модули.
make install
У вас должно быть разрешение записи в каталог установки Perl. Кроме того, необходимо иметь разрешение на запись в системный каталог для программ (обычно /usr/local/bin или /usr/bin), чтобы установить поставляемые с модулем вспомогательные программы pmsql, pmysql и dbimon.
Бизнес в интернете: Сайты - Софт - Языки - Дизайн
- Киберсантинг
- Киберсантинг как бизнес
- Виды Киберсантинга
- Создание игр
- Дизайн как бизнес
- Dreamweaver
- PHP
- Homesite
- Frontpage
- Studio MX
- Сайтостроительство
- Citrix MetaFrame
- Стили сайта
- ActiveX на сайте
- HTML как основа сайта
- Adobe GoLive
- Что такое WEB
- Мобильные WAP сайты
- 3D графика на сайтах
- 3DS MAX графические решения
- Графика в 3D Studio MAX и на сайте