Sybase & PHP

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Data Goob

    Sybase & PHP

    Hi,

    I had trouble using FreeTDS with Sybase ASE 12.5.2 DE. I kept getting errors when trying to run a stored
    procedure, using the PHP program found at the end of this post.


    php: dblib.c:303: buffer_add_row: Assertion `row_size <=
    buf->element_size ' failed.
    Aborted


    But now having uninstalled FreeTDS, and trying to connect to my databases, I can no longer connect.


    PHP Warning: sybase_select_d b(): Sybase: A link to the server could not be established in ...


    What do I have to do to connect PHP to Sybase?

    I also have downloaded iAnyWhere and installed it, but I don't know if I needed it or not, or if
    it can even help.

    Very confused. Do I need to re-install FreeTDS or is there a lib already in Sybase?
    ( Using Sybase ASE 12.5.2 DE )

    Thanks in advance!

    My last configure command:

    ../configure \
    --with-apache2=../httpd-2.0.53 \
    --with-apxs2=/usr/local/apache2/bin/apxs \
    --with-openssl \
    --with-mysql \
    --with-dbase \
    --with-ttf \
    --with-curl \
    --with-gd \
    --with-gnu-ld \
    --with-module=so \
    --with-zlib \
    --with-sqlanywhere=/opt/sybase/SYBSsa9/ \
    --with-sybase=/opt/sybase/OCS-12_5 \
    --with-mcrypt


    Test Program: ( worked fine with SQL but not stored procedures when FreeTDS was installed )

    <?php

    $servername = "my-server-here" ;
    $portnumber = "5000" ;
    $username = "sa" ;
    $password = "" ;
    $database = "master" ;

    $db = sybase_connect( "$servername:$p ortnumber","$us ername", "$password" );
    sybase_select_d b ( "$database" );
    $q = sybase_query("s p_server_info", $db);

    # $q = sybase_query("$ {database}..sp_ help", $db);
    # $q = sybase_query("s elect * from sysobjects", $db);

    $syb_num_fields = sybase_num_fiel ds( $q ) ;
    $syb_num_rows = sybase_num_rows ( $q ) ;

    $row_cnt = 0 ;
    $field_cnt = 0 ;

    while($row = sybase_fetch_ro w($q))
    {
    if ( $row_cnt == 0 )
    {
    for ( $f=1; $f<=$syb_num_fi elds;$f++)
    {
    $info = sybase_fetch_fi eld($q);
    print "[$info->name]";
    if ( $field_cnt == $syb_num_fields )
    {
    print "\n" ;
    $field_cnt = 0 ;
    }
    }
    print "\n" ;
    }

    ++$row_cnt ;
    $field_cnt = 0 ;
    while(list($k, $v) = each($row))
    {
    ++$field_cnt;
    $datum = NULL ;
    $datum = rtrim ( $v ) ;
    print "[$datum]" ;
    if ( $field_cnt == $syb_num_fields )
    {
    print "\n" ;
    $field_cnt = 0 ;
    }
    }
    }
    sybase_close ( $db ) ;

    ?>

Working...