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 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());
?>
Previous Comments:
------------------------------------------------------------------------
[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.
------------------------------------------------------------------------
[2007-02-13 01:31:36] aspen dot olmsted at alliance dot biz
Yes. If you insert into sql other ways it works perfect. Including
through php
------------------------------------------------------------------------
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