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