ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Базы данных. Часть Тридцать Пятая.


13-04-2015

integer sybase_pconnect(string server, string username, string password)
Функция sybase_pconnect аналогична функции sybase_connect за исключением того, что соединения, созданные этой функцией, остаются активизированными после завершения работы сценария. Соединение сохраняется до тех пор, пока активизирован процесс на сервере, таким образом, если процесс работает с другим PHP-сценарием, это же соединение будет использоваться повторно. Соединения, созданные функцией sybase_pconnect, не закрываются с помощью функции sybase_close.
integer sybase_query(string query, resource connection)
Функция sybase_query (листинг 17.58) выполняет запрос на заданном соединении и возвращает идентификатор результата. Он может использоваться во многих других функциях, описанных в данном разделе. Если аргумент connection не задан, используется последнее открытое соединение.
Кроме обычных запросов можно использовать хранимые процедуры аналогично тому, как это делается из командной оболочки isql. Доступ к результирующему набору можно осуществлять таким же образом, как к результирующему набору, полученному с помощью оператора SELECT. К сожалению, интерфейс PHP позволяет получать только один результирующий набор. При вызове хранимой процедуры, возвращающей несколько результатов, доступным является только тот результирующий набор, который был получен последним.
В листинге 17.57 представлена простейшая хранимая процедура, которая будет использоваться в листинге 17.58.

| Листинг 17.57. Простейшая хранимая процедура Sybase
CREATE PROCEDURE dbo.add_numbers (@a int, @b int)
AS
BEGIN
SELECT @a + @b
END

Листинг 17.58. Вызов хранимой процедуры Sybase

//соединиться
$Link = @sybase_connect('falcon', 'leon', 'corephp');
//работа с базой данных "sample"
@sybase_select_db("sample", $Link);
//выполнить хранимую процедуру add_numbers
$Query = "exec add_numbers 2, 3";
$Result = sybase_query($Query, $Link);
//получить результат, который является
//первым столбцом в первой строке
print(sybase_result($Result, 0, 0));
// закрыть соединение
sybase_close($Link);
?> 
string sybase_result(integer result, integer row, value field)
Функция sybase_result возвращает значение определенного поля по заданной строке и имени поля. Аргументом field может быть целое число или имя поля. Нумерация полей и строк начинается с нуля. Если производительность является недостаточной, для выполнения этой функции следует воспользоваться более быстрой функцией sybase_fetch_row.
boolean sybase_select_db(string database, resource connection)
Функция sybase_select_db позволяет выбрать базу данных. Если аргумент connection не задан, используется последнее установленное соединение. Пример использования этой функции см. в описании функции sybase_fetch_array.
boolean sybase_set_message_handler(string function) boolean sybase_set_message_handler(array method)
Функция sybase_set_message_handler (листинг 17.59) предназначена для перехвата сообщений от сервера. Программу обработки можно задать, указав имя функции или метода объекта. В последнем случае можно задать метод обрабатываемого объекта или статический метод класса, задав массив, состоящий из двух элементов. Первым элементом является экземпляр или имя класса, вторым является имя метода.
Программа обработки принимает пять аргументов в последующем порядке: номер сообщения, уровень, статус, номер строки и описание. Первые четыре аргумента являются целыми числами, последний является строкой. Если эта функция возвращает значение FALSE, PHP генерирует обычное сообщение об ошибке.

Листинг 17.59. Функция sybase_set_message_handler

function handleSybaseError($message, $severity, $state, $line,
$text)
{
//отчет о " плохих" именах таблицы if($message == 208)
{
return(FALSE);
}
//регистрировать ошибку без вывода сообщения error_log("Ошибка Sybase $message " .
"Серьезность: $severity Статус: $state Строка: $line
$text",
3, "C:/tmp/sybase_error.log"); return(TRUE);
}
// зарегистрировать программу обработки sybase_set_message_handler("handleSybaseError"); // соединиться
$Link = @sybase_connect('falcon', 'leon', 'corephp'); //работать с базой данных "sample" @sybase_select_db("sample", $Link); 
//попробовать ошибочный запрос,
//чтобы посмотреть, что произойдет в случае ошибки
$Query = "SELECT FROM item ";
if(!($Result = sybase_query($Query, $Link)))
{
print(" Ошибка запроса!");
}
// закрыть соединение sybase_close($Link);
?>

resource sybase_unbuffered_query(string query, resource connection)
Функция sybase_unbuffered_query выполняет запрос и возвращает результат типа result. В отличие от функции sybase_query эта функция не размещает весь результирующий набор в памяти. Вместо этого она считывает результирующий набор построчно. Это позволяет обрабатывать огромные результирующие наборы, не потребляя большой объем оперативной памяти. Недостатком этой функции является то, что невозможно выполнить другой запрос по заданному соединению до тех пор, пока чтение из результирующего набора не будет завершено или память, выделенная под результирующий набор, не будет освобождена с помощью функции sybase_free_result. Невозможно определить достоверное количество прочитанных строк до тех пор, пока не будут прочитаны все строки.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Базы данных. Часть Тридцать Четвёртая. PHP. Объектные уровни