User Contributed Notes Sybase functions |
|
[email protected]
20-Feb-2000 05:18 |
|
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
[email protected] 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!)
|
|
[email protected]
01-Mar-2000 08:34 |
|
Poor documentation on sybase support!! Here's how I made it work... First
get the linux ASE from sybase (maybe the ctlibs provided at php.net 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:
SERVERNAME
query tcp ether 172.16.1.4 4100
master tcp ether 172.16.1.4 4100
(change IP/FQHN and port to your
setup) Now you can check your config by using
$SYBASE/bin/isql -S
SERVERNAME -U DBUSER -P PASSWD
If you get a prompt you have connected
to your sybase! Hurray! Now you can try with
php
$db=sybase_connect("SERVERNAME","DBUSER","DBPASSWD");
And...
Voila!
|
|
[email protected]
06-Mar-2000 08:57 |
|
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...
|
|
[email protected]
22-Mar-2000 01:28 |
|
If you get a segfault with sybase-ct, add a en_US entry to your
$SYBASE/locales/locales.dat file:
<PRE>
[linux]
locale
= en_US, us_english, iso_1
...
</PRE>
|
|
[email protected]
09-Jul-2000 02:03 |
|
Amigos, pay attention: sybase_get_last_message() is gone! Read logs or set
track_errors=On and use $php_errormsg instead.
|
|
[email protected]
18-Aug-2000 09:41 |
|
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.
|
|
[email protected]
06-Sep-2000 08:13 |
|
about sybase-ct library
You can download the file from php.net
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 www.freetds.org that is
ok!
System wthout trouble
Debian 2.1 gcc (2.7.2.3)
libc-2.0.7.so
System With trouble
Debian 2.2 gcc (2.95.2)
libc-2.1.3.so
RedHat 6.2 gcc [egcs] (2.91.66)
libc-2.1.3.so
Please refer to mssql if you try to connect to MS
SQL Server!!!
|
|
|
[email protected]
09-Oct-2000 06:20 |
|
A bit more about blobs:
If you want to retrieve blobs without
them getting truncated, do a 'set textsize value' query first.
|
|
[email protected]
13-Oct-2000 08:17 |
|
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.
|
|
[email protected]
04-Dec-2000 08:03 |
|
After weeks of work, I have succeeded in getting PHP4 to talk with ASA 7.0
on Redhat Linux 7.0.
Here's my very incomplete not so beautiful
FAQ.
Let
me know if this helps you.
|
|
tysonlt2webmedia.com.au
25-May-2001 04:27 |
|
**** NEWS FLASH ****
ATTENTION ALL STRUGGLING TO SETUP
SYBASE!
There is finally a complete howto on
Sybase/Apache/PHP/Linux here:
Hope
it helps.
|
|
tysonlt2webmedia.com.au
08-Jun-2001 08:40 |
|
******* ANOTHER NEWS FLASH :) *******
Hi, the Apache-PHP-Sybase mini
howto is now available at
Enjoy.
|
|
[email protected]
28-Jun-2001 01:33 |
|
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.
|
|
|
[email protected]
28-Aug-2001 03:54 |
|
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)) {
$i++;
$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.
thx...
|
|
[email protected]
14-Sep-2001 06:22 |
|
If you use IIS and sybase-ct library, be sure to use PHP 4.0.6 or higher,
since older version caused crashes.
|
|
[email protected]
14-Sep-2001 06:29 |
|
If you have a Linux machine with Sybase ASE 11.9.2, Php 4.0.6, Apache and
Sybase-ct library, don't upgrade to Sybase ASE 12.5 yet, or Apache will
stop working.
Since 12.5 is newer than 4.0.6, I guess this will be
fixed soon.
|
|
[email protected]
25-Oct-2001 10:56 |
|
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:
|
|
|
[email protected]
15-Apr-2002 09:28 |
|
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
[email protected] or [email protected]
German Chu &
Eagle Lee
|
|
ddc at portalframework.com
14-May-2002 06:19 |
|
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:
--with-sybase-ct=$SYBASE/OCS instead of
--with-sybase-ct=$SYBASE
|
|
[email protected]
17-Jun-2002 10:25 |
|
The way to use Sybase Adaptive Server Anywhere+PHP+Apache on Unix
|
|
[email protected]
13-Aug-2002 09:44 |
|
If you compile php with freetds (www.freetds.org) support (--with-sybase in
php), apache might NOT START due to unresolved symbol.
This can be
easily solved by adding -ltds flag in config_vars.mk file after
configuring PHP under the line EXTRA_LIBS.
You can view this debug
fix on www.freetds.org under FAQ section.
|
|
|