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