|
осуществляет подстановку действительных значений вместо меток-заместителей.
Если по какой-либо причине команду нельзя подготовить, функция возвращает undef.
Пример
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.
DBI::quote
$quoted_string = $db->quote($string);
DBI::quote принимает строку для использования в качестве запроса SQL и
возвращает ее копию с правильно расставленными для ввода в запрос кавычками, в
том числе расставляя корректные кавычки по концам строки.
Пример
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' (включая наружные кавычки)
# Теперь обе строки годятся для использования в командах для своих
# соответствующих серверов баз данных.
DBI::rows
$number_of_rows = $statement_handle->rows;
Del: : rows возвращает число строк данных, содержащихся в описателе команды.
Для DBD::mSQL и DBD::mysql эта функция дает точное число для всех команд,
включая SELECT. Для многих других драйверов, которые не хранят в памяти сразу
все результаты, эта функция надежно работает только для команд, не являющихся
SELECT. Это следует учитывать при написании переносимых программ. Функция
возвращает —1, если по какой-либо причине число строк неизвестно. Переменная
$DBI: : rows выполняет ту же задачу.
Пример
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";
DBI::state
$sql_error = $handle->state;
DBI: : state возвращает код ошибки SQL SQLSTATE последней по времени ошибки DBI.
В данное время DBD::mSQL и DBD^mysql сообщают 'S1000' для всех ошибок. Эта
функция доступна для описателей баз данных и команд. Переменная $ОВ1: : state
выполняет ту же задачу.
Пример
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");
DBI::trace
DBI->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, а само значение используется в качестве
имени файла для вывода отладочной информации.
Пример
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.
|
|