MySQL & mSQL



DBI.pmAPI - часть 2


$myothertable_output->execute;

while ($myothertable_output->fetch) {

# Каждый раз $name и $date автоматически изменяются.

print "Имя: $name Дата: $date\n"; }

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) . Ссылок на скаляры должно быть ровно столько, сколько полей в выходных результатах, иначе выполнение программы будет прекращено.

Пример

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

}

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.




Содержание  Назад  Вперед