Solved

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

Posted on 2010-08-17
4
350 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-
  • 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

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

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

This article discusses how to create an extensible mechanism for linked drop downs.
This article shows gives you an overview on SQL Server 2016 row level security. You will also get to know the usages of row-level-security and how it works
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

830 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