Bug #47803 [Com]: Executing prepared statements is succesfull only for the first two statements
| From: | egil at wp dot pl | Date: | Wed, 23 Jul 2014 11:18:05 +0000 |
| Subject: | Bug #47803 [Com]: Executing prepared statements is succesfull only for the first two statements | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-186781@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=47803&edit=1
ID: 47803
Comment by: egil at wp dot pl
Reported by: egil at wp dot pl
Summary: Executing prepared statements is succesfull only for
the first two statements
Status: Feedback
Type: Bug
Package: ODBC related
Operating System: Windows XP SP 3
PHP Version: 5.2.9
Block user comment: N
Private report: N
New Comment:
Still fails on 3rd execution.
Gist with test code (PHP) and test data (SQL):
https://gist.github.com/Eccenux/28ebf6c4a37d0e4a7c5f
Output:
> "c:\PHP-5.4-snap\php" -f "odbc_sql_test.php"
5.4.32-dev
Warning: odbc_execute(): SQL error: [Microsoft][ODBC SQL Server Driver]BÅÄ
d sekwencji funkcji,
SQL state S1010 in SQLDescribeParameter in D:\_tmp\odbc_sql_test.php on line 60
Fatal error: [sql] exec: array(test 3, 3) in D:\_tmp\odbc_sql_test.php on line 62
Previous Comments:
------------------------------------------------------------------------
[2014-07-16 02:41:28] yohgaki@php.net
Please try using this snapshot:
http://snaps.php.net/php5.4-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
------------------------------------------------------------------------
[2009-05-29 10:18:26] tom dot graham at jadu dot co dot uk
I have exactly the same problem, two rows inserted fine and the third row is not inserted and the
following error is thrown: "[Microsoft][ODBC SQL Server Driver]Invalid character value for cast
specification".
------------------------------------------------------------------------
[2009-03-27 09:10:43] egil at wp dot pl
Description:
------------
I do odbc_prepare and then I would like to be able to execute this statement with different paramas.
This is what it is for, right? Fortunately not after 2 odbc_execute calls third call gives (mssql
2005 as you may see):
[Microsoft][SQL Native Client]Invalid character value for cast specification
Reproduce code:
---------------
<?
$sql = "UPDATE category
SET name = ?
WHERE cat_id = ?";
$result = $odbc_prepare($link, $sql);
if (!$result)
{
trigger_error ('[sql] prep: '.$sql, E_USER_ERROR);
}
foreach ($upd_cats as &$k)
{
if(!odbc_execute($result, array($k['name'], $k['id'])))
{
trigger_error ('[sql] exec: '."array({$k['name']},
{$k['id']})", E_USER_ERROR);
}
}
?>
Expected result:
----------------
successful execution (note that it works fine if I move prepare to foreach block)
Actual result:
--------------
After third execution I get an error:
[Microsoft][SQL Native Client]Invalid character value for cast specification
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=47803&edit=1