ID:               40452
 Comment by:       ethan dot nelson at ltd dot org
 Reported By:      aspen dot olmsted at alliance dot biz
 Status:           Assigned
 Bug Type:         PDO related
 Operating System: Windows 2003, XP
 PHP Version:      5.2.1
 Assigned To:      wez
 New Comment:

This bug may be due to failure of SQL Server to perform implicit
conversion between character and datetime data types when the
characterlength is not explicitly part of variable declaration.  I
posted my workaround under PDO_ODBC section.


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

[2008-02-29 20:11:56] ethan dot nelson at ltd dot org

This code illustrates the fact that SQL can work with a variety of date
formats when moving to a SQL2005 type of datetime.

To use this script, remove the sql comments '--' and comment out the
appropriate params line to test PDO attempts to work with the different
formats.  All of them throw exceptions.

<?php

include("../include/config.inc");

$db = new bkg_db();

$query = "SELECT 'sqltest1' = CAST('20080101 12:07:32' AS datetime)
,'sqltest2' = CAST('2008-01-01 12:07:32' AS datetime)
,'sqltest3' = CAST('01/01/2008 12:07:32' AS datetime)
,'sqltest4' = CAST('01-01-2008 12:07:32' AS datetime)
--,'pdotest' = CAST(:pdotest AS varchar)
";

$params = array(':pdotest' => '20080101 12:07:32');
$params = array(':pdotest' => '2008-01-01 12:07:32');
$params = array(':pdotest' => '01/01/2008 12:07:32');
$params = array(':pdotest' => '01-01-2008 12:07:32');
$params = array();

$db->execute_query($query,$params);

print_r($db->get_results());

?>

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

[2007-11-23 11:04:34] rob at tdd dot org dot uk

I was experiencing the same problem with a stored procedure (SQL
SERVER), however I found that I was calling the parameters in a
different order in which they where expected, even though I was
specifying the parameter name.

-- replcate

CREATE PROC hello
@world VARCHAR(100),
@repeat INT
AS

        SELECT 'hello ' + REPLICATE(@world, @repeat)

GO

-- both give same output

EXEC hello @world = 'world', @repeat = 5
EXEC hello @repeat = 5, @world = 'world'


If I was to call the first exec equivalent in php using bound
parameters then it works, however the php equivalent using bound
parameters it fails with a function sequence error.

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

[2007-10-11 14:22:29] jfdsmit at gmail dot com

I have a similar experience, running PHP 5.2.4 on Windows 2003. The
server /does/ accept values when they are formatted exactly yyyy-mm-dd
(as per the date() format Y-m-d) /or/ if the supplied value == NULL.
Empty strings and dates formatted otherwise (2007-3-12 for instance)
result in a HY010 SQLSTATE Sequence error. So contrary to what daniel
dot tams at gmail dot com says, the bug is formatting-dependant in my
experience

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

[2007-04-24 19:05:14] daniel dot tams at gmail dot com

Just wanted to clarify that the error is unrelated to the format of the
datetime.

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

[2007-04-24 19:00:09] daniel dot tams at gmail dot com

I can confirm this problem on PHP 5.2.1. The exact error is the
following: 
Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[HY010]: Function sequence error: 0 [Microsoft][ODBC Driver
Manager] Function sequence error (SQLExecute[0] at
ext\pdo_odbc\odbc_stmt.c:133)' in C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\iptaa\lib\IPTAA_CRUD.class.php:135 Stack
trace: #0 C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\iptaa\lib\IPTAA_CRUD.class.php(135):
PDOStatement->execute() #1 C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\iptaa\lib\IPTAA_CRUD.class.php(414):
IPTAA_CRUD->create(Array) #2 C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\iptaa\users.php(15):
IPTAA_CRUD->handleHttpPost() #3 {main} thrown in C:\Program Files\Apache
Software Foundation\Apache2.2\htdocs\iptaa\lib\IPTAA_CRUD.class.php on
line 135

Fatal error: Exception thrown without a stack frame in Unknown on line
0

This is a pretty serious limitation of the PDO ODBC driver.

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/40452

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

Reply via email to