Ok, here is enough code to get you started :-)

<?php
/** this function is here to ensure all locks etc on a connection are
  * cleared at the end of the script.  NEVER call this from a script!
  */
function _adodb_shutdown($connection=null)
{
    // Place any shutdown code here
}

/** This class houses the static methods to creating connections to
SQLServer.
  */
class ADODB
{
        
    function ConnectToSQLServer
    (
        $server,
        $database,
        $username,
        $password
    )
    {
        $obj=new COM('ADODB.connection');
        if(!$obj->pinned())
        {
            $obj->open("Provider=SQLOLEDB.1;Server=$server;Database=
$database;UID=$username;PWD=$password;");
        }
        register_shutdown_function('_adodb_shutdown');
        return $obj;
    }

    function ExecuteQuery($sql,&$connection)
    {
        $recordsAffected=0;
        return $connection->Execute($sql, $recordsAffected, 8);
    }
    
    function Execute($sql,&$connection)
    {
        $ra=0;
        $connection->Execute($sql,$ra,129);
    }

}

/* Some util functions */

function dbEscape($s)
{
    return "'".str_replace("'", "''", $s)."'";
}
 
function forceNumber($number)
{
    if(!is_numeric($number))
    {
        // Trigger error is one of my fuctions, you'd have to do
somethine else ;-)
        //trigger_error("Non numeric passed to forceNumber: '$number'",
E_USER_ERROR);
    }
    return $number*1.0; // ensures it is stored in php as a number
}

/* Some examples of using it.
 * Please note that in these examples I connect to the DB in each
function,
 * this is totally and utterly wrong for a real situation, you should
only
 * make a connection once per php client connection.
 */

/* Gets a single result */
function exmpl1()
{
    $server=ADODB::ConnectToSQLServer
    (
        $server,
        $database,
        $username,
        $password
    );
    $recset=0;
    $recset=ADODB::ExecuteQuery("SELECT MIN(RowID) FROM T_RowID",
$server);
    $ret=$recset->Fields;
    $ret=$ret->item(0);
    $ret=$ret->Value;
    $recset->close();
    return $ret;
}

/* Gets an array of results */
function exmpl2($Name,$FromId)
{
    $server=ADODB::ConnectToSQLServer
    (
        $server,
        $database,
        $username,
        $password
    );
    $recset=0;
    $Name=dbEscape($name);
    $FromId=forceNumber($parent);
    $recset=ADODB::ExecuteQuery("SELECT ToId FROM T_References WHERE
KeyName=$Name AND FromId=$FromId",$server);
    $ret=array();
    while(!$recset->EOF())
    {
        $p=$recset->Fields;
        $p=$p->item(0);
        array_push($ret,$p->Value);
        $recset->movenext();
    }
    $recset->close();
    return $ret;
}

/* Runs an update only */
function exmpl3($parent,$name,$child)
{
    $server=ADODB::ConnectToSQLServer
    (
        $server,
        $database,
        $username,
        $password
    );
    $parent=forceNumber($parent);
    $name=substr($name,0,112);
    $name=dbEscape($name);
    $child=forceNumber($child);
    $sql="INSERT INTO T_References (FromId,KeyName,ToId) VALUES
($parent,$name,$server)";
    ADODB::Execute($sql,$this->connection);
}
?>

Cheers

AJ

On Mon, 2006-12-04 at 12:30 +1300, Bruce Cowin wrote:

> I'd be interested.  I've used ADO when connecting through VB and C# but in 
> PHP (which I'm relatively new at) I've always used the mssql_* functions.
> 
> 
> Regards,
> 
> Bruce
> 
> >>> git <[EMAIL PROTECTED]> 2/12/2006 1:43 a.m. >>>
> On Wed, 15 Nov 2006 02:17:07 -0800, Frank M. Kromann wrote:
> 
> > Hello,
> > 
> > This is not correct.
> > 
> > PDO and native mssql_*() functions exists in two fifferent versions. The
> > version compiled with Microsofts (old) version of dblib has the
> > restrictions mentioned here but the version compiled with FreeTDS
> > (php_dblib.dll and php_pdo_dblib.dll) does not.
> > 
> > - Frank
> > 
> >> Hello,
> >> 
> >> I recommend you use PDO and odbc to connect to MS SQL.  Other
> > connection
> >> methods have limitations with MS SQL including:
> >> 
> >> 1.) varchars limited to 256
> >> 2.) no support for extended characters
> >> 
> >> Aspen
> >> 
> >> -----Original Message-----
> >> From: Dale Attree [mailto:[EMAIL PROTECTED] 
> >> Sent: Tuesday, November 14, 2006 5:14 AM
> >> To: php-windows@lists.php.net 
> >> Subject: [PHP-WIN] SQL Server 2005
> >> Importance: High
> >> 
> >> Hi all,
> >> 
> >>  
> >> 
> >> I am having trouble connecting to SQL Server 2005. I have installed it
> > with
> >> mixed mode authentication.
> >> 
> >>  
> >> 
> >> When I call mssql_connect('localhost',$username,$password), I get a PHP
> >> error saying unable to connect to server.
> >> 
> >>  
> >> 
> >> In the PHP manual, it says something about an "interfaces" file. Where
> > would
> >> I find this file?
> >> 
> >>  
> >> 
> >> Kind Regards,
> >> 
> >> Dale
> >> 
> >> 
> >>
> 
> In general - unless you are connecting from something other than windows
> is it most logical to use ADODB and COM to connection with SQL Server.
> 
> That is how I have done it for years and it ticks all the boxes, fast
> reliable, flexible, supported, EASY.
> 
> If anyone is interested enough I am happy to post a description of how to
> do it and the issues you might face on one of my blogs
> 
> Cheers
> 
> AJ
> 
> -- 
> Cubical Land
> www.cubicalland.com 
> 

-- 
git <[EMAIL PROTECTED]>
www.cubicalland.com

Reply via email to