Req #48431 [Com]: Support PDO::PARAM_STMT
| From: | ssufficool@php.net | Date: | Thu, 01 Dec 2011 06:34:00 +0000 |
| Subject: | Req #48431 [Com]: Support PDO::PARAM_STMT | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-165608@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=48431&edit=1
ID: 48431
Comment by: ssufficool@php.net
Reported by: candrews at integralblue dot com
Summary: Support PDO::PARAM_STMT
Status: Open
Type: Feature/Change Request
Package: PDO related
Operating System: *
PHP Version: 5.2.9
Block user comment: N
Private report: N
New Comment:
I believe the correct syntax would be:
<?php
$sth = $dbh->prepare("SELECT * FROM users
JOIN :usernames as mytab
on users.name = mytab.username");
$sth2 = $dbh2->execute("select username, userid, accesslevel from permissions where
accesslevel='admin'")
$sth->bindParam(":usernames", $sth2, PDO::PARAM_STMT);
$sth->execute();
?>
PDO::PARAM_ARRAY would make more sense for an associative array argument, which could be used in the
same way.
An example prepared statement for either case would be:
SELECT * FROM users
JOIN (
SELECT 'user1' as username, 1 as userid, 'admin' as accesslevel
UNION ALL SELECT 'user5' as username, 5 as userid, 'admin' as accesslevel
) as mytab
on users.name = mytab.username
Previous Comments:
------------------------------------------------------------------------
[2009-05-29 20:08:26] candrews at integralblue dot com
Description:
------------
According to the PDO constants page at http://us3.php.net/manual/en/pdo.constants.php
, PDO::PARAM_STMT "Represents a recordset type. Not currently supported by any drivers."
It would be nice if PDO supported this type for all drivers in that don't directly support it
using emulation, and for drivers do, using the driver implementation (just like how all the other
prepared statement parameter types work).
Reproduce code:
---------------
Right now, implementing a prepared statement query involving arrays is (I believe) impossible.
<?php
$sth = $dbh->prepare('SELECT *
FROM users
WHERE username in :usernames);
$sth->bindParam(":usernames",
array("alice","bob","dave"), PDO::PARAM_STMT);
$sth->execute();
?>
That would be very nice to be able to do - and I believe that is the correct syntax.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=48431&edit=1