PDO and MS Sql Server
| From: | Bruce Cowin | Date: | Thu, 05 Jul 2007 23:27:32 +0000 |
| Subject: | PDO and MS Sql Server | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-43752@lists.php.net to get a copy of this message | ||
I'm using PHP 5.1. The documentation for PDO doesn't list MS Sql server as one of the
drivers that support PDO but there is a php_pdo_mssql.dll which seems to work so I'm using
that.
I need to get the id of a new record just inserted. I can't use lastInsertId() as I get a
message saying it's not supported. So I've created a stored proc that returns the id just
created (code below). The insert works fine but the $emailid variable is not populated. I can run
the stored proc in query analyzer and it outputs the id correctly so I know the stored proc works.
All the examples I see return strings, not sure if that has anything to do with it. And as for the
parameter length for the output parameter, I've tried nothing as well as 99999.
$stmt = $this->dbh->prepare("exec usp_EmailInsert :projectid, :mailfrom, :mailto,
:mailcc, :subject, :body, :mimefilename, :emailid");
$stmt->bindParam(':projectid', $projectid, PDO::PARAM_INT);
$stmt->bindParam(':mailfrom', $from, PDO::PARAM_STR, 100);
$stmt->bindParam(':mailto', $to, PDO::PARAM_STR, 500);
$stmt->bindParam(':mailcc', $cc, PDO::PARAM_STR, 500);
$stmt->bindParam(':subject', $subject, PDO::PARAM_STR, 1000);
$stmt->bindParam(':body', $body, PDO::PARAM_LOB);
$stmt->bindParam(':mimefilename', $mimefilename, PDO::PARAM_STR, 500);
$stmt->bindParam(':emailid', $emailid, PDO::PARAM_INT, 99999);
$stmt->execute();
echo "\nemailid = $emailid\n";
Anyone have any ideas? Thanks.
Regards,
Bruce