Solved

Handling two tables from a PDO Call to a MS SQL Procedure

Posted on 2010-08-17
4
354 Views
Last Modified: 2013-12-13
HI,

I have a procedure call to a MS SQL DB, the procedure returns two tables, how should I handle the tables, I'm quite able to deal with one. I'm doing it with 2 single calls at present but the page takes too long to call.

My get tables method:

 
public function getTables($procname,$parameter) {
      //see : http://www.php.net/manual/en/pdo.prepared-statements.php example #10 and #11
      $vars = explode(",", $parameter);
      $num = count($vars);
      //create holders for calls
      for ($i = 0; $i <= $num; $i++) {
         $holder.="?";
         if ($i != $num)
         {
            $holder.=",";
         }
      }
//var_dump($holder);
//var_dump($vars );
      $stmt = DBO::prepare("EXECUTE " . $procname . " " . $holder);
      // TODO build bind, may need to change type for strings and ints and others
      // perhaps look to put into dbcalls
      for ($i = 0; $i <= $num; $i++) {
         $stmt->bindParam($i + 1, $vars[$i], PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 4000);
      }

// call the stored procedure
      try
      {
        $stmt->execute();
      } catch (PDOException $e)
      {
//echo "\nPDO::errorCode(): ";
//print $dbh->errorCode();
         var_dump($e);
         // var_dump($e);
      }
      $data = ($stmt->fetchAll(PDO::FETCH_ASSOC));
      $stmt->closeCursor();
     // var_dump($data);
      return $data;
   }

Open in new window

0
Comment
Question by:darren-w-
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
4 Comments
 
LVL 40

Accepted Solution

by:
Richard Quadling earned 500 total points
ID: 33463147
Once you've processed the first result set, you need to get the next result set.

http://docs.php.net/manual/en/pdostatement.nextrowset.php contains the documentation for PDOStatement->nextRowset.

PDOStatement->nextRowset() returns true/false if there is/is not a next result set.
0
 
LVL 13

Author Comment

by:darren-w-
ID: 33463353
Thats great, thanks.
0
 
LVL 13

Author Comment

by:darren-w-
ID: 34205727
Coming back to this, and it looks like the MSSQL driver does not support this feature?
0
 
LVL 40

Expert Comment

by:Richard Quadling
ID: 34205779
@Darren, you may be running an older version of the driver.

http://msdn.microsoft.com/en-us/library/ff628153(SQL.90).aspx
0

Featured Post

Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In the first part of this tutorial we will cover the prerequisites for installing SQL Server vNext on Linux.
Recently we ran in to an issue while running some SQL jobs where we were trying to process the cubes.  We got an error saying failure stating 'NT SERVICE\SQLSERVERAGENT does not have access to Analysis Services. So this is a way to automate that wit…
Using examples as well as descriptions, and references to Books Online, show the documentation available for datatypes, explain the available data types and show how data can be passed into and out of variables.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

635 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question