MySQL & mSQL

Mysql.pm API


Mysql.pm API идентичен Msql API (с заменой всюду «Msql» на «Mysql»), за исключением следующих отличий:

Mysql::connect

$db = Mysql->connect($host, Sdatabase, $user, $password);

Помимо трех методов соединения, совпадающих с Msql: :connect , в Mysql:: connect есть четвертый метод, требующий передачи пароля в качестве дополнительного аргумента. Первый аргумент - имя узла или IP-адрес сервера MySQL. Если в качестве этого аргумента передается undef, модуль соединяется с сонетом Unix на локальном узле. Второй аргумент является именем первоначально выбираемой базы данных. Его всегда можно впоследствии изменить с помощью Mysql: :selectdb . Можно передать undef в качестве второго аргумента, чтобы не выбирать исходной базы данных. Третий аргумент является именем пользователя для соединения с базой данных. Для успешного соединения имя пользователя должно присутствовать в таблицах доступа MySQL. Последний аргумент является паролем пользователя.

Пример

use Mysql;

$db = Mysql->connect(undef,'mydata','webuser1, 'super_secret_squirrel');

# Теперь описатель базы данных соединен с локальным сервером MySQL и

# использует базу данных 'mydata1.

# Использовано имя пользователя 'webuser' для

# соединения с паролем 'super_secret_squirrel'.

Mysql::errno

$error_number = $db->errno;



Mysql: :errno возвращает код последней ошибки. Код соответствует сообщению об ошибке, возвращаемому Msql: : errmsg .

Пример

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"; }

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


Пример

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"; }

Mysql::Statement::affectedrows

$number_of_affected_rows = $statement^handle->affectedrows;

Msql: :Statement: : affectedrows возвращает число строк, обработанных запросом. Эта функция полезна, поскольку Mysql.pm возвращает описатель команды для запросов, не являющихся командами SELECT.

Пример

use Mysql;

my $db = Mysql->connect(undef,'mydata');

my $output = $db->query("UPDATE mytable set name='bob' where

name='joe'");

print $output->affectedrows . " строк обновлено.\n";

Mysql::Statement::info

$info = $sth->info;

Mysql: : Statement:: info возвращает дополнительные результаты некоторых запросов, для которых в Mysql.pm нет специальных функций, таких как ALTER TABLE и LOAD DATA INFILE . Например, при использовании LOAD DATA INFILE функция Mysql: : Statement:: info возвращает число вставленных записей, число удаленных, число пропущенных и число элементов, которые невозможно синтаксически разобрать.

Пример

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»;

Mysql::Statement::insertid

$new_id = $statement_handle->insertid;

Функция Mysql::Statement::insertid возвращает текущее значение поля auto_increment (если такое имеется) в таблице. Если в таблице нет поля auto_increment , она возвращает неопределенное значение undef.

Пример

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";


Содержание раздела