Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg

PHP : Function Reference : Sybase Functions

Sybase Functions




To enable Sybase-DB support configure PHP --with-sybase[=DIR]. DIR is the Sybase home directory, defaults to /home/sybase. To enable Sybase-CT support configure PHP --with-sybase-ct[=DIR]. DIR is the Sybase home directory, defaults to /home/sybase.

Runtime Configuration

The behaviour of these functions is affected by settings in php.ini.

Table 317. Sybase configuration options

Name Default Changeable Changelog
sybase.allow_persistent "1" PHP_INI_ALL PHP_INI_ALL in PHP <= 4.0.2. PHP_INI_SYSTEM in PHP <= 4.0.3.
sybase.max_persistent "-1" PHP_INI_ALL PHP_INI_ALL in PHP <= 4.0.2. PHP_INI_SYSTEM in PHP <= 4.0.3.
sybase.max_links "-1" PHP_INI_ALL PHP_INI_ALL in PHP <= 4.0.2. PHP_INI_SYSTEM in PHP <= 4.0.3.
sybase.interface_file "/usr/sybase/interfaces" PHP_INI_SYSTEM  
sybase.min_error_severity "10" PHP_INI_ALL  
sybase.min_message_severity "10" PHP_INI_ALL  
sybase.compatability_mode "0" PHP_INI_ALL  
magic_quotes_sybase "0" PHP_INI_ALL Removed in PHP 6.0.0.

Here's a short explanation of the configuration directives.

sybase.allow_persistent boolean

Whether to allow persistent Sybase connections.

sybase.max_persistent integer

The maximum number of persistent Sybase connections per process. -1 means no limit.

sybase.max_links integer

The maximum number of Sybase connections per process, including persistent connections. -1 means no limit.

sybase.min_error_severity integer

Minimum error severity to display.

sybase.min_message_severity integer

Minimum message severity to display.

sybase.compatability_mode boolean

Compatibility mode with old versions of PHP 3.0. If on, this will cause PHP to automatically assign types to results according to their Sybase type, instead of treating them all as strings. This compatibility mode will probably not stay around forever, so try applying whatever necessary changes to your code, and turn it off.

magic_quotes_sybase boolean

If magic_quotes_sybase is on, a single-quote is escaped with a single-quote instead of a backslash if magic_quotes_gpc or magic_quotes_runtime are enabled.


Note that when magic_quotes_sybase is ON it completely overrides magic_quotes_gpc . In this case even when magic_quotes_gpc is enabled neither double quotes, backslashes or NUL's will be escaped.

Table 318. Sybase-CT configuration options

Name Default Changeable Changelog
sybct.allow_persistent "1" PHP_INI_SYSTEM PHP_INI_ALL in PHP <= 4.0.2. Available since PHP 4.0.2. Removed in PHP 4.0.3.
sybct.max_persistent "-1" PHP_INI_SYSTEM PHP_INI_ALL in PHP <= 4.0.2. Available since PHP 4.0.2. Removed in PHP 4.0.3.
sybct.max_links "-1" PHP_INI_SYSTEM PHP_INI_ALL in PHP <= 4.0.2. Available since PHP 4.0.2. Removed in PHP 4.0.3.
sybct.min_server_severity "10" PHP_INI_ALL Available since PHP 4.0.2. Removed in PHP 4.0.3.
sybct.min_client_severity "10" PHP_INI_ALL Available since PHP 4.0.2. Removed in PHP 4.0.3.
sybct.hostname NULL PHP_INI_ALL Available since PHP 4.0.2. Removed in PHP 4.0.3.
sybct.deadlock_retry_count "0" PHP_INI_ALL Available since PHP 4.3.0.

Here's a short explanation of the configuration directives.

sybct.allow_persistent boolean

Whether to allow persistent Sybase-CT connections. The default is on.

sybct.max_persistent integer

The maximum number of persistent Sybase-CT connections per process. The default is -1 meaning unlimited.

sybct.max_links integer

The maximum number of Sybase-CT connections per process, including persistent connections. The default is -1 meaning unlimited.

sybct.min_server_severity integer

Server messages with severity greater than or equal to sybct.min_server_severity will be reported as warnings. This value can also be set from a script by calling sybase_min_server_severity(). The default is 10 which reports errors of information severity or greater.

sybct.min_client_severity integer

Client library messages with severity greater than or equal to sybct.min_client_severity will be reported as warnings. This value can also be set from a script by calling sybase_min_client_severity(). The default is 10 which effectively disables reporting.

sybct.login_timeout integer

The maximum time in seconds to wait for a connection attempt to succeed before returning failure. Note that if max_execution_time has been exceeded when a connection attempt times out, your script will be terminated before it can take action on failure. The default is one minute.

sybct.timeout integer

The maximum time in seconds to wait for a select_db or query operation to succeed before returning failure. Note that if max_execution_time has been exceeded when an operation times out, your script will be terminated before it can take action on failure. The default is no limit.

sybct.hostname string

The name of the host you claim to be connecting from, for display by sp_who. The default is none.

sybct.deadlock_retry_count int

Allows you to define how often deadlocks are to be retried. The default is -1, or "forever".

For further details and definitions of the PHP_INI_* constants, see the Appendix I, php.ini directives.

Resource Types

Predefined Constants

This extension has no constants defined.

Table of Contents

sybase_affected_rows — Gets number of affected rows in last query
sybase_close — Closes a Sybase connection
sybase_connect — Opens a Sybase server connection
sybase_data_seek — Moves internal row pointer
sybase_deadlock_retry_count — Sets the deadlock retry count
sybase_fetch_array — Fetch row as array
sybase_fetch_assoc — Fetch a result row as an associative array
sybase_fetch_field — Get field information from a result
sybase_fetch_object — Fetch a row as an object
sybase_fetch_row — Get a result row as an enumerated array
sybase_field_seek — Sets field offset
sybase_free_result — Frees result memory
sybase_get_last_message — Returns the last message from the server
sybase_min_client_severity — Sets minimum client severity
sybase_min_error_severity — Sets minimum error severity
sybase_min_message_severity — Sets minimum message severity
sybase_min_server_severity — Sets minimum server severity
sybase_num_fields — Gets the number of fields in a result set
sybase_num_rows — Get number of rows in a result set
sybase_pconnect — Open persistent Sybase connection
sybase_query — Sends a Sybase query
sybase_result — Get result data
sybase_select_db — Selects a Sybase database
sybase_set_message_handler — Sets the handler called when a server message is raised
sybase_unbuffered_query — Send a Sybase query and do not block

Code Examples / Notes » ref.sybase

jon dot bertsch

Up to php 5.0.4 you cannot install both sybase and mssql (they use the same function names). It turns out though that if you use the Freetds library you can connect to sybase using the mssql functions (and visa versa I assume). Setup your servers in the freetds.conf file (for sybase use specify version 5.0, for mssql 7 or 8.0) and call the database connection as you would with mssql (mssql_conect). You should be able to connect either sql server or sybase. I don't know if all sybase functions will work as expected but basic querying is succesful. Hope this helps someone.


To store an image file into Sybase try this :
$data = bin2hex(fread(fopen($image,"r"), filesize($image)));
//don't forget the 0x before the hex data.
if(! sybase_query("INSERT INTO test_image (image) VALUES (0x".$data.")")) die ("Unable to store the image.");
To retrieve it just do a select and use a hex2bin function (this one has been submitted by and is the fastest) :
function hex2bin($data) {
    $len = strlen($data);
     return pack("H" . $len, $data);
PS : use CT-lib rather than DB-lib (Sybase doesn't work on it anymore!)


This should make the image/blob subject rather complete:
PHP 3 seems to have a bug with image columns in sybase. Apache gets a segmentation fault when trying to retrieve an image column with more than a certain amount of characters (even when using set textsize).
The work around is to use text columns instead. They have the same capacity, only you need to convert the data to ASCII (e.g. Hex, see examples in earlier contributions, bin2hex). Remember to put the data in quotes, too, when INSERTing.


This is way to compile Sybase ASE 12.5 with PHP5.0.0 and Apache 2 on Linux:
- install apache
- install ase1252_de_linux.tgz to /opt/sybase-12.5
- shell:# ln -s /opt/sybase-12.5 /opt/sybase
- edit phpsrc/configure and remove all '-linsck'
- edit phpsrc/ext/sybase-ct/php_sybase_ct.h and change CTLIB_VERSION CS_VERSION_100 to 125
- shell:# export SYBASE=/opt/sybase
- phpsrc/configure --with-sybase-ct=/opt/sybase/OCS-12_5
- phpsrc/make and make install
- edit apache2/conf/httpd.conf and add AddType... .php
- create /opt/sybase/interfaces file
[tab!]master tcp ether ipAddress port
[tab!]query tcp ether ipAddress port
- apache2/bin/apachectl start
I hope, that I save your time. stas_aka_rsv

There is a way how to force php work with both php_mssql.dll and php_sybase_ct.dll. Just open php_sybase_ct.dll in any editor (dont use MS WORD :0) ) and replace all "mssql_" on something like that "masql_".
After that there will not be warnings about double function definitions and php can use php_sybase_ct.dll to access to sybase and php_mssql.dll to access to mssql.
The reason why I did such thing is that I couldnt connect to mssql using php_sybase_ct.dll.


The way to use Sybase Adaptive Server Anywhere+PHP+Apache on Unix


The best place to get Sybase for Debian :


Poor documentation on sybase support!! Here's how I made it work... First get the linux ASE from sybase (maybe the ctlibs provided at will do fine, too) Install the ASE rpm. (some distributions don't have system libs etc in the rpm database so you might get some dependency errors. If your systems fits the requirements install with "ignore dependencies") Recompile php with option --with-sybase-ct=/dirtoyoursybasehome. Then you need to set the env variable for (at least)your apache user by export SYBASE=/dirtoyoursybasehome. Now you need to set up your servers (like DSNs for ODBC). Edit the file $SYBASE/interfaces and add your server entries:
 query tcp ether 4100
 master tcp ether 4100
(change IP/FQHN and port to your setup) Now you can check your config by using
If you get a prompt you have connected to your sybase! Hurray! Now you can try with php
And... Voila!



PHP and Sybase 15
# cat /opt/sybase/ >> /etc/profile
# exit
Make new logon
# vi /var/build/php-5.2.3/ext/sybase_ct/php_sybase_ct.h
change this line ...
# ln -sd /opt/sybase /home/sybase
# cp /opt/sybase/OCS-15_0/lib/libsybcomn.a /opt/sybase/OCS-15_0/lib/libcomn.a
# cp /opt/sybase/OCS-15_0/lib/libsybcs.a /opt/sybase/OCS-15_0/lib/libs.a
# cp /opt/sybase/OCS-15_0/lib/libsybct.a /opt/sybase/OCS-15_0/lib/libct.a
# cp /opt/sybase/OCS-15_0/lib/libsybintl.a /opt/sybase/OCS-15_0/lib/libintl.a
The new  file  /etc/ it must have the line
# ldconfig
        BUILD PHP
# ./configure --with-apxs2=/usr/sbin/apxs --with-config-file-path=/etc/ --with-sybase-ct=/opt/sybase/OCS-15_0
# make
# make install
# cp php.ini-dist  /etc/php.ini
Change display_erros=On to display_erros=Off
Edit Apache's httpd.conf file to associate .php files with a MIME type:
# PHP script support
AddType application/x-httpd-php .php


maybe it can help.
my database is ASE
this is my script....
$cnn = sybase_connect("db_server","sa","password");
$result = sybase_query("Select itemno,stockno from your_db..your_table");
$i = 0;
while ($r = sybase_fetch_array($result)) {
$itemno = $r["itemno"];
$stockno = $r["stockno"];
echo "$i    $stockno   $itemno
note that I did not use the
sybase_select_db("db") function because ASE had a default database.


It's important to note that sybase_ct connect or pconnect were causing GPF.
If you experienced this problem, just update PHP to 4.0.6.


In response to the post by jon dot bertsch at ucop dot edu, it is possible to install both the FreeTDS libraries and the Sybase libraries.  The problem is that the Sybase extension alias's its function names to the mssql_ functions.
Take a look in your PHP source directory under /ext/sybase_ct/php_sybase_ct.c near the top where the sybase_functions[] declaration is.  You can comment out the part that alias's the function names, recompile with FreeTDS and Sybase, and you're all set!


If you would like to use the wide table support of Sybase ASE 12.5, take advantage of XML/XQL embedded in the database and use varchars of more than 255 char, you'll need to recompile PHP changing this line in the
   php_sybase_ct.h file:
This will only run if you have installed Sybase ASE Open Client v. 12.5 and configured PHP telling it where the OCS is... (./configure --with-sybase-ct=$SYBASE_HOME/OCS [...])
Diego Dal Cero.


If you use IIS and sybase-ct library, be sure to use PHP 4.0.6 or higher, since older version caused crashes.


If you get a segfault with sybase-ct, add a en_US entry to your  $SYBASE/locales/locales.dat file:
locale = en_US, us_english, iso_1

matt dot sawyer

I've noticed (after days of frustration) that setting the sybase.interface_file to a location other than the default ($SYBASE/interfaces) in php.ini doesn't always work.  I finally gave up and copied my interface entries to the default location, and it works consistently now.  (This is even with sybase.interface_file still set to the non-default location).

sean dot healey

I've finally got PHP 5.0.5 running under Apache2 on Solaris 8 ... connecting to Sybase ASE servers 12.0 and 12.5 using CT-LIB 12.5.
The following was my build procedure -
Build Apache:
./configure \
 --prefix=/usr/local/apache2 \
make install
Edit httpd.conf, adjusting directives to suit the local environment.
Following advice given above, update the Sybase version string in the PHP sybase_ct module header file:
vi /var/build/php-5.0.5/ext/sybase_ct/php_sybase_ct.h
change this line ...
Build PHP:
SYBASE=/..../..../sybase12_5  <<-- path to your Sybase distribution root
./configure \
 --prefix=/usr/local/php \
 --with-sybase-ct=$SYBASE/$SYBASE_OCS \
 --enable-static=sybase-ct \
 --with-apxs2=/usr/local/apache2/bin/apxs \
 --enable-sysvmsg \
 --enable-sysvsem \
make test
NOTE: 'make test' will almost certainly fail all of the Sybase functionality, unless you update the test include file to use valid connectivity details for your local server:
vi /var/build/php-5.0.5/ext/sybase_ct/tests/
 // Change if needed
 define('HOST',     '****');
 define('USER',     '****');
 define('PASSWORD', '****');
make install
Edit Apache's httpd.conf file to associate .php files with a MIME type:
 # PHP script support
 AddType application/x-httpd-php .php .phtml
 AddType application/x-httpd-php-source .phps
Edit the apachectl script, inserting the following variable declarations after environment variables are imported:
Ensure you have an 'interfaces' file in the root of your sybase distribution (Above the OCS-12_5 subdirectory), containing a server entry in the following format for each server you want to connect to:
  <tab> master tcp ether <hostname> <port>
  <tab> query tcp ether <hostname> <port>
(if this is your dataserver machine, there will be at least 1 entry already for the local dataserver. It is advisable to install all of the above on a separate machine though, with its own copy of the sybase client)
Cross fingers, and:
apachectl start
If you get 'relocation' errors when starting Apache with the php module configured to load, check the output of 'ldd'. Each of the Sybase libraries should link to files under your Sybase client distribution:
ldd /usr/local/apache2/modules/ =>     /.../sybase12_5/OCS-12_5/lib/ => /.../sybase12_5/OCS-12_5/lib/ => /.../sybase12_5/OCS-12_5/lib/ =>      /.../sybase12_5/OCS-12_5/lib/ =>      /.../sybase12_5/OCS-12_5/lib/
  <snip other libraries>
If you see '' linking anywhere else, this is likely because the PHP build has incorrectly linked to a slightly different filename - - which doesn't exist in the Sybase client. Unfortunately a completely unrelated library of the same name does exist elsewhere in Unix! (Apparently the Sybase version was created before the duplicate was introduced into Unix).
My workaround was to create the following symlink in sybase client library 'lib' directory - -> ./*
'make distclean' in your PHP build directory, and repeat the build as above.


I would STRONGLY recommend using the ct library over the db library when compiling sybase support with php4+. I ran into strange http child seg faults when trying to issue multiple sql statements in one php page.  Using ct-library there is no problem.


I struggled to get this to work for a week. Here's a tip. Log on to your system using the same login as your web server, probably "nobody". Using this account, make sure you can get isql to work. In my case, I had to change the permissions on the /opt/sybase folder, as well as chmod the /opt/sybase/interfaces file to 644. (It was 600 by default, and did not allow anyone but root to read it.) Once I did this, things started to happen...


I solved my connection problems by setting ENV variables directly in PHP.
putenv ("SYBASE=/opt/sybase");
putenv ("SYBPLATFORM=linux");
putenv ("LD_LIBRARY_PATH=/opt/sybase/lib");
putenv ("LC_ALL=default");
putenv ("PATH=\"/opt/sybase/bin:$PATH\"");
putenv ("DSQUERY=SYBASE");
Martin Sarajervi


I just want to report that, like explained in bug #27562, selective stored procedures (like sp_helpdb) don't return a resultset with freeTDS >= 0.62. (using php <= 4.3.9)
If you have installed such releases of freeTDS, downgrade to 0.61.x.


Freetds 5.2 bugs!!
For those who use Freetds 5.2 running under linux connect to sqlserver2000, there is a bugs in selecting NVARCHAR field that data will either duplicated or truncated. To avoid this problem, please use CAST or CONVERT function in sql statement such as:
$query="select CAST(fieldname as nchar(1000)) as fieldname from table"
Feel free to contact us at
German Chu & Eagle Lee


For those, who might want to use SyBase client not only under Linux, you may try to use open-source FreeTDS library -
Also there's how-to for FreeTDS and PHP:

greg dot fenton

For Sybase/iAnywhere SQL Anywhere (a.k.a Adaptive Server Anywhere, a.k.a. ASA), you likely should try the SQLAnywhere PHP module [which now ships with ASA as of 9.0.2]:
ASA can work with TDS (Open Client), but if performance is something you care about you likely want to use the native ASA interface.  For info/help, consider posting to sybase.public.sqlanywhere.general or sybase.public.sqlanywhere.linux  (
Hope this helps,


Compiling PHP with Sybase ASE 12.5 on Linux.
Assuming that you have installed the Sybase ASE 12.5 client in linux, and you have the SYBASE env variable set, you can compile PHP >= 4.0.6 with Sybase ASE 12.5.
Just use:
instead of


Amigos, pay attention: sybase_get_last_message() is gone! Read logs or set track_errors=On and use $php_errormsg instead.


about sybase-ct library
You can download the file from but the samples in the tar (and php) maybe not compile I have this problem in some systems (but not in others with old librarys and old gcc).
Try freetds from that is ok!
System wthout trouble
Debian 2.1 gcc (
System With trouble
Debian 2.2 gcc (2.95.2)
RedHat 6.2 gcc [egcs] (2.91.66)
Please refer to mssql if you try to connect to MS SQL Server!!!


A note for all who may be struggling...  Microsoft did away with the ct-lib support in SQL Server 2000.
I played with it and found a couple of articles related to it on google.  A workaround/different method would be preferrable.  Anybody?


A bit more about blobs:

If you want to retrieve blobs without them getting truncated, do a 'set textsize value' query first.

Change Language

Follow Navioo On Twitter
.NET Functions
Apache-specific Functions
Alternative PHP Cache
Advanced PHP debugger
Array Functions
Aspell functions [deprecated]
BBCode Functions
BCMath Arbitrary Precision Mathematics Functions
PHP bytecode Compiler
Bzip2 Compression Functions
Calendar Functions
CCVS API Functions [deprecated]
Class/Object Functions
Classkit Functions
ClibPDF Functions [deprecated]
COM and .Net (Windows)
Crack Functions
Character Type Functions
Cybercash Payment Functions
Credit Mutuel CyberMUT functions
Cyrus IMAP administration Functions
Date and Time Functions
DB++ Functions
Database (dbm-style) Abstraction Layer Functions
dBase Functions
DBM Functions [deprecated]
dbx Functions
Direct IO Functions
Directory Functions
DOM Functions
DOM XML Functions
enchant Functions
Error Handling and Logging Functions
Exif Functions
Expect Functions
File Alteration Monitor Functions
Forms Data Format Functions
Fileinfo Functions
filePro Functions
Filesystem Functions
Filter Functions
Firebird/InterBase Functions
Firebird/Interbase Functions (PDO_FIREBIRD)
FriBiDi Functions
FrontBase Functions
FTP Functions
Function Handling Functions
GeoIP Functions
Gettext Functions
GMP Functions
gnupg Functions
Haru PDF Functions
hash Functions
Hyperwave Functions
Hyperwave API Functions
i18n Functions
IBM Functions (PDO_IBM)
iconv Functions
ID3 Functions
IIS Administration Functions
Image Functions
Imagick Image Library
Informix Functions
Informix Functions (PDO_INFORMIX)
Ingres II Functions
IRC Gateway Functions
PHP / Java Integration
JSON Functions
LDAP Functions
libxml Functions
Lotus Notes Functions
LZF Functions
Mail Functions
Mailparse Functions
Mathematical Functions
MaxDB PHP Extension
MCAL Functions
Mcrypt Encryption Functions
MCVE (Monetra) Payment Functions
Memcache Functions
Mhash Functions
Mimetype Functions
Ming functions for Flash
Miscellaneous Functions
mnoGoSearch Functions
Microsoft SQL Server Functions
Microsoft SQL Server and Sybase Functions (PDO_DBLIB)
Mohawk Software Session Handler Functions
mSQL Functions
Multibyte String Functions
muscat Functions
MySQL Functions
MySQL Functions (PDO_MYSQL)
MySQL Improved Extension
Ncurses Terminal Screen Control Functions
Network Functions
Newt Functions
NSAPI-specific Functions
Object Aggregation/Composition Functions
Object property and method call overloading
Oracle Functions
ODBC Functions (Unified)
ODBC and DB2 Functions (PDO_ODBC)
OpenAL Audio Bindings
OpenSSL Functions
Oracle Functions [deprecated]
Oracle Functions (PDO_OCI)
Output Control Functions
Ovrimos SQL Functions
Paradox File Access
Parsekit Functions
Process Control Functions
Regular Expression Functions (Perl-Compatible)
PDF Functions
PDO Functions
Phar archive stream and classes
PHP Options&Information
POSIX Functions
Regular Expression Functions (POSIX Extended)
PostgreSQL Functions
PostgreSQL Functions (PDO_PGSQL)
Printer Functions
Program Execution Functions
PostScript document creation
Pspell Functions
qtdom Functions
Rar Functions
GNU Readline
GNU Recode Functions
RPM Header Reading Functions
runkit Functions
SAM - Simple Asynchronous Messaging
Satellite CORBA client extension [deprecated]
SCA Functions
SDO Functions
SDO XML Data Access Service Functions
SDO Relational Data Access Service Functions
SESAM Database Functions
PostgreSQL Session Save Handler
Session Handling Functions
Shared Memory Functions
SimpleXML functions
SNMP Functions
SOAP Functions
Socket Functions
Standard PHP Library (SPL) Functions
SQLite Functions
SQLite Functions (PDO_SQLITE)
Secure Shell2 Functions
Statistics Functions
Stream Functions
String Functions
Subversion Functions
Shockwave Flash Functions
Swish Functions
Sybase Functions
TCP Wrappers Functions
Tidy Functions
Tokenizer Functions
Unicode Functions
URL Functions
Variable Handling Functions
Verisign Payflow Pro Functions
vpopmail Functions
W32api Functions
WDDX Functions
win32ps Functions
win32service Functions
xattr Functions
xdiff Functions
XML Parser Functions
XML-RPC Functions
XMLReader functions
XMLWriter Functions
XSL functions
XSLT Functions
YAZ Functions
YP/NIS Functions
Zip File Functions
Zlib Compression Functions
eXTReMe Tracker