php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #57058 Prepared Insert Bug
Submitted: 2006-06-01 18:01 UTC Modified: 2006-10-11 10:56 UTC
From: kfbombar at us dot ibm dot com Assigned:
Status: Closed Package: PDO_ODBC (PECL)
PHP Version: 5_1 CVS-2006-06-01 OS: Windows
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
47 + 44 = ?
Subscribe to this entry?

 
 [2006-06-01 18:01 UTC] kfbombar at us dot ibm dot com
Description:
------------
When testing pdo_odbc on php 5.1.4 with DB2, I got the following test errors when running the standard PDO tests:

PDO Common: PDOStatement iterator [pdo_013.phpt]
PDO Common: PDOStatement SPL iterator [pdo_014.phpt]
PDO Common: PDO::FETCH_INTO [pdo_025.phpt]
PDO Common: extending PDO (2) [pdo_026.phpt]
PDO Common: PDO::FETCH_LAZY [pdo_027.phpt]
PDO Common: extending PDO (3) [pdo_029.phpt]
PDO Common: extending PDO (4) [pdo_030.phpt]

The following error is from pdo_025:

Reproduce code:
---------------
<?php

$db = new PDO("odbc:db2", "db2user", "db2password");

$db->exec('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, val VARCHAR(10), val2 VARCHAR(16))');

$data = array(
  array('10', 'Abc', 'zxy'),
  array('20', 'Def', 'wvu'),
  array('30', 'Ghi', 'tsr'),
  array('40', 'Jkl', 'qpo'),
  array('50', 'Mno', 'nml'),
  array('60', 'Pqr', 'kji'),
);

$stmt = $db->prepare("INSERT INTO test VALUES(?, ?, ?)");
foreach ($data as $row) {
  $stmt->execute($row);
}

class Test {
  public $id, $val, $val2;
}

$stmt = $db->prepare('SELECT * FROM test');
$stmt->setFetchMode(PDO::FETCH_INTO, new Test);
$stmt->execute();

foreach($stmt as $obj) {
  var_dump($obj);
}

echo "===FAIL===\n";

class Fail {
  protected $id;
  public $val, $val2;
}

$stmt->setFetchMode(PDO::FETCH_INTO, new Fail);
$stmt->execute();

foreach($stmt as $obj) {
  var_dump($obj);
}

?>


Expected result:
----------------
object(Test)#%d (3) {
  ["id"]=>
  string(2) "10"
  ["val"]=>
  string(3) "Abc"
  ["val2"]=>
  string(3) "zxy"
}
object(Test)#%d (3) {
  ["id"]=>
  string(2) "20"
  ["val"]=>
  string(3) "Def"
  ["val2"]=>
  string(3) "wvu"
}
object(Test)#%d (3) {
  ["id"]=>
  string(2) "30"
  ["val"]=>
  string(3) "Ghi"
  ["val2"]=>
  string(3) "tsr"
}
object(Test)#%d (3) {
  ["id"]=>
  string(2) "40"
  ["val"]=>
  string(3) "Jkl"
  ["val2"]=>
  string(3) "qpo"
}
object(Test)#%d (3) {
  ["id"]=>
  string(2) "50"
  ["val"]=>
  string(3) "Mno"
  ["val2"]=>
  string(3) "nml"
}
object(Test)#%d (3) {
  ["id"]=>
  string(2) "60"
  ["val"]=>
  string(3) "Pqr"
  ["val2"]=>
  string(3) "kji"
}
===FAIL===

Fatal error: Cannot access protected property Fail::$id in %spdo_025.php on line %d


Actual result:
--------------
object(Test)#2 (3) {
  ["id"]=>
  string(2) "10"
  ["val"]=>
  string(3) "Abc"
  ["val2"]=>
  string(3) "zxy"
}
object(Test)#2 (3) {
  ["id"]=>
  string(2) "20"
  ["val"]=>
  string(3) "Def"
  ["val2"]=>
  string(3) "wvu"
}
object(Test)#2 (3) {
  ["id"]=>
  string(2) "30"
  ["val"]=>
  string(3) "Ghi"
  ["val2"]=>
  string(3) "tsr"
}
object(Test)#2 (3) {
  ["id"]=>
  string(2) "40"
  ["val"]=>
  string(3) "Jkl"
  ["val2"]=>
  string(3) "qpo"
}
object(Test)#2 (3) {
  ["id"]=>
  string(2) "50"
  ["val"]=>
  string(3) "Mno"
  ["val2"]=>
  string(3) "nml"
}
object(Test)#2 (3) {
  ["id"]=>
  string(2) "60"
  ["val"]=>
  string(3) "Pqr"
  ["val2"]=>
  string(3) "kji"
}

Warning: main(): SQLSTATE[]: <<Unknown error>>: 0  (SQLFetchScroll[0] at odbc_stmt.c:363) in pdo_025.php on line 32
===FAIL===

Fatal error: Cannot access protected property Fail::$id in pdo_025.php on line 46


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-10-10 22:24 UTC] wez@php.net
Is this still a problem with the latest PHP 5.2RC ?
(I don't currently have DB2 access to verify this)
 [2006-10-11 10:56 UTC] kfbombar at us dot ibm dot com
Wez,

With the latest PHP 5.2RC, it looks like most of these have been resolved.  So for this bug specifically it can be closed.  Just to let you know, on my end I am seeing two failed tests: bug_38253.phpt and pdo_033.phpt.
Thanks,

Kellen
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 16 23:01:30 2024 UTC