_db->select() ->from('zfproducts'); $stmt = $this->_db->prepare($select->__toString()); $n = $stmt->columnCount(); // DB2 returns the column count once the query has been prepared // while PDO returns it only after it has been executed $this->assertEquals(2, $n); $stmt->execute(); $n = $stmt->columnCount(); $stmt->closeCursor(); $this->assertType('integer', $n); $this->assertEquals(2, $n); } public function testStatementBindParamByPosition() { $this->markTestIncomplete($this->getDriver() . ' is having trouble with binding params'); } public function testStatementBindParamByName() { $products = $this->_db->quoteIdentifier('zfproducts'); $product_id = $this->_db->quoteIdentifier('product_id'); $product_name = $this->_db->quoteIdentifier('product_name'); $productIdValue = 4; $productNameValue = 'AmigaOS'; try { $stmt = $this->_db->prepare("INSERT INTO $products ($product_id, $product_name) VALUES (:id, :name)"); // test with colon prefix $this->assertTrue($stmt->bindParam(':id', $productIdValue), 'Expected bindParam(\':id\') to return true'); // test with no colon prefix $this->assertTrue($stmt->bindParam('name', $productNameValue), 'Expected bindParam(\'name\') to return true'); $this->fail('Expected to catch Zend_Db_Statement_Exception'); } catch (Zend_Exception $e) { $this->assertType('Zend_Db_Statement_Exception', $e, 'Expecting object of type Zend_Db_Statement_Exception, got '.get_class($e)); $this->assertEquals("Invalid bind-variable position ':id'", $e->getMessage()); } } public function testStatementBindValueByPosition() { $this->markTestIncomplete($this->getDriver() . ' is having trouble with binding params'); } public function testStatementBindValueByName() { $products = $this->_db->quoteIdentifier('zfproducts'); $product_id = $this->_db->quoteIdentifier('product_id'); $product_name = $this->_db->quoteIdentifier('product_name'); $productIdValue = 4; $productNameValue = 'AmigaOS'; try { $stmt = $this->_db->prepare("INSERT INTO $products ($product_id, $product_name) VALUES (:id, :name)"); // test with colon prefix $this->assertTrue($stmt->bindParam(':id', $productIdValue), 'Expected bindParam(\':id\') to return true'); // test with no colon prefix $this->assertTrue($stmt->bindParam('name', $productNameValue), 'Expected bindParam(\'name\') to return true'); $this->fail('Expected to catch Zend_Db_Statement_Exception'); } catch (Zend_Exception $e) { $this->assertType('Zend_Db_Statement_Exception', $e, 'Expecting object of type Zend_Db_Statement_Exception, got '.get_class($e)); $this->assertEquals("Invalid bind-variable position ':id'", $e->getMessage()); } } public function getDriver() { return 'Db2'; } }