ID:               45128
 Updated by:       [email protected]
 Reported By:      ethan dot charles at ltd dot org
-Status:           Open
+Status:           Feedback
 Bug Type:         PDO related
 Operating System: win 2k3 sql 2k5
 PHP Version:      5.2.6
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/




Previous Comments:
------------------------------------------------------------------------

[2008-05-29 18:12:06] ethan dot charles at ltd dot org

Description:
------------
The order of parameters in a stored procedure must be strictly followed
in PDO, otherwise, the parameters will get swapped around in the trace.

Reproduce code:
---------------
CREATE a stored procedure in SQL with two parameters in order:
@param1 nvarchar(100),
@param2 nvarchar(100)

Run a trace in profiler to watch what PDO prepares and executes against
the server.

Prepare the EXEC statement but swap the order of the parameters.

If you prepare and execute a query in the form:
$statement = connection->prepare(
  "EXEC dbo.sptest @param2=:param2,@param1=:param1"
);

$statement->execute(array(':param1' => 'test1', ':param2' => 'test2'));

Expected result:
----------------
I would expect that the stored procedure will be prepared by PDO in the
form:

declare @p1 int
set @p1=NULL
exec sp_prepare @p1 output,N'@test1 nvarchar(100),@test2
nvarchar(100)',N'EXECUTE runtest @test2 = @test2, @test1 = @test1',1
select @p1

Actual result:
--------------
I would expect that the stored procedure will be prepared by PDO in the
form:

declare @p1 int
set @p1=NULL
exec sp_prepare @p1 output,N'@test1 nvarchar(100),@test2
nvarchar(100)',N'EXECUTE runtest @test2 = @test1, @test1 = @test2',1
select @p1


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=45128&edit=1

Reply via email to