From: "David Stoltz" on 25 Jun 2010 09:55 Hi Folks, Upon occasion, I have the need to hit our MS MSL database from our PHP/mySQL server. So I've created a function, but I'm not sure if you can return a recordset from a function. My code is below... In the calling page I code: <?php include('../includes/mssql.php'); hitMSSQL("server","database","username","password","SELECT * FROM TABLE1"); echo $rs->Fields(1); ?> The mssql.php include file is: <?php function hitMSSQL($server,$db,$login,$pass,$query){ $conn = new COM ("ADODB.Connection") or die("Cannot start ADO"); $connStr = "PROVIDER=SQLOLEDB;SERVER=".$server.",1433;UID=".$login.";PWD=".$pass."; DATABASE=".$db; $conn->open($connStr); $rs = $conn->execute($query); return $rs; } ?> If I have the echo statement in the function, it works. And of course I can return a single value like: Return $rs-Fields("value"); But I can't return the whole recordset... Does anyone have any good ideas so I can access the recordset in the calling page? Thanks!
From: Richard Quadling on 25 Jun 2010 09:59 On 25 June 2010 14:55, David Stoltz <Dstoltz(a)shh.org> wrote: > <?php > > include('../includes/mssql.php'); > > hitMSSQL("server","database","username","password","SELECT * FROM > TABLE1"); > > echo $rs->Fields(1); > > ?> You are not catching the result of the hitMSSQL() function. Try ... <?php include('../includes/mssql.php'); $rs = hitMSSQL("server","database","username","password","SELECT * FROM TABLE1"); echo $rs->Fields(1); ?> -- ----- Richard Quadling "Standing on the shoulders of some very clever giants!" EE : http://www.experts-exchange.com/M_248814.html EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling
From: "David Stoltz" on 25 Jun 2010 10:07 Tried that - I finally got it - in the function I had to return the actual query execute, instead of the recordset. This did not work: $rs = $conn->execute($query); Return $rs; This DID work: Return $conn->execute($query); Thanks for the reply! -----Original Message----- From: Richard Quadling [mailto:rquadling(a)gmail.com] Sent: Friday, June 25, 2010 9:59 AM To: David Stoltz Cc: php-general(a)lists.php.net Subject: Re: [PHP] Returning a Recordset from a Funtion On 25 June 2010 14:55, David Stoltz <Dstoltz(a)shh.org> wrote: > <?php > > include('../includes/mssql.php'); > > hitMSSQL("server","database","username","password","SELECT * FROM > TABLE1"); > > echo $rs->Fields(1); > > ?> You are not catching the result of the hitMSSQL() function. Try ... <?php include('../includes/mssql.php'); $rs = hitMSSQL("server","database","username","password","SELECT * FROM TABLE1"); echo $rs->Fields(1); ?> -- ----- Richard Quadling "Standing on the shoulders of some very clever giants!" EE : http://www.experts-exchange.com/M_248814.html EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling
From: Richard Quadling on 25 Jun 2010 10:16 On 25 June 2010 15:07, David Stoltz <Dstoltz(a)shh.org> wrote: > Tried that - > > I finally got it - in the function I had to return the actual query execute, instead of the recordset. > > This did not work: > > $rs = $conn->execute($query); > Return $rs; > > This DID work: > > Return $conn->execute($query); > > Thanks for the reply! > > -----Original Message----- > From: Richard Quadling [mailto:rquadling(a)gmail.com] > Sent: Friday, June 25, 2010 9:59 AM > To: David Stoltz > Cc: php-general(a)lists.php.net > Subject: Re: [PHP] Returning a Recordset from a Funtion > > On 25 June 2010 14:55, David Stoltz <Dstoltz(a)shh.org> wrote: >> <?php >> >> include('../includes/mssql.php'); >> >> hitMSSQL("server","database","username","password","SELECT * FROM >> TABLE1"); >> >> echo $rs->Fields(1); >> >> ?> > > You are not catching the result of the hitMSSQL() function. > > Try ... > > <?php > > include('../includes/mssql.php'); > > $rs = hitMSSQL("server","database","username","password","SELECT * FROM > TABLE1"); > > echo $rs->Fields(1); > > ?> > > > -- > ----- > Richard Quadling > "Standing on the shoulders of some very clever giants!" > EE : http://www.experts-exchange.com/M_248814.html > EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp > Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 > ZOPA : http://uk.zopa.com/member/RQuadling > Can you ... var_dump($rs); in the function? I'd be very surprised that ... return $rs; with $rs = your_func(); didn't work. So much so, I'm guessing you are not showing the whole story somewhere. Pretty much without exception, $rs = $conn->execute($query); return $rs; is the same as ... return $conn->execute($query); Richard. -- ----- Richard Quadling "Standing on the shoulders of some very clever giants!" EE : http://www.experts-exchange.com/M_248814.html EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling
From: Andrew Ballard on 25 Jun 2010 10:38 On Fri, Jun 25, 2010 at 9:55 AM, David Stoltz <Dstoltz(a)shh.org> wrote: > Hi Folks, > > > > Upon occasion, I have the need to hit our MS MSL database from our > PHP/mySQL server. So I've created a function, but I'm not sure if you > can return a recordset from a function. My code is below... > > > > In the calling page I code: > > <?php > > include('../includes/mssql.php'); > > hitMSSQL("server","database","username","password","SELECT * FROM > TABLE1"); > > echo $rs->Fields(1); > > ?> > > > > The mssql.php include file is: > > <?php > > function hitMSSQL($server,$db,$login,$pass,$query){ > > > > Â Â Â Â Â Â Â Â $conn = new COM ("ADODB.Connection") > > Â Â Â Â Â Â Â Â Â or die("Cannot start ADO"); > > Â Â Â Â Â Â Â Â $connStr = > "PROVIDER=SQLOLEDB;SERVER=".$server.",1433;UID=".$login.";PWD=".$pass."; > DATABASE=".$db; > > Â Â Â Â Â Â Â Â $conn->open($connStr); > > Â Â Â Â Â Â Â Â $rs = $conn->execute($query); > > Â Â Â Â Â Â Â Â return $rs; > > > > } > > ?> > > > > If I have the echo statement in the function, it works. > > > > And of course I can return a single value like: > > Return $rs-Fields("value"); > > > > But I can't return the whole recordset... > > > > Does anyone have any good ideas so I can access the recordset in the > calling page? > > > > Thanks! > > Is there a reason you need to work with COM/ADODB to get the information from SQL Server as opposed to one of the PHP libraries? If your are using COM you must be running under Windows which means you should be able to use Microsoft's SQL Server Driver for PHP, which is the best tool I've seen to date for the task. There are also the older mssql and the newer PDO_MSSQL libraries, or even odbc or PDO_ODBC that will work OK in many cases as well. Any of these are much simpler to work with than COM variants in PHP. Andrew
|
Next
|
Last
Pages: 1 2 Prev: Attachment to email from form. Next: Using fopen or SQL to check image |